হ্যাঁ ঠিক, পার্থক্যটি হ'ল এটি কোনও মান দেয়।
সরলীকরণ (এক্সপ্রেশন ব্যবহার না করে):
List<T>.ForEach
একটি পদক্ষেপ নেয়, এটি কোনও ফেরতের ফলাফল আশা করে না।
সুতরাং একটি Action<T>
প্রতিনিধি যথেষ্ট হবে .. বলুন:
List<T>.ForEach(param => Console.WriteLine(param));
বলার মতোই:
List<T>.ForEach(delegate(T param) { Console.WriteLine(param); });
পার্থক্যটি হ'ল পারম টাইপ এবং ডেলিগেট ডিক্লেয়ারেশনটি ব্যবহার দ্বারা অনুমান করা হয় এবং কোনও সাধারণ ইনলাইন পদ্ধতিতে ব্রেসগুলি প্রয়োজন হয় না।
যেখানে হিসাবে
List<T>.Where
ফলাফল প্রত্যাশা করে একটি ফাংশন নেয়।
সুতরাং একটি Function<T, bool>
আশা করা হবে:
List<T>.Where(param => param.Value == SomeExpectedComparison);
যা একই:
List<T>.Where(delegate(T param) { return param.Value == SomeExpectedComparison; });
আপনি এই পদ্ধতিগুলিকে ইনলাইনও ডিক্লেয়ার করতে পারেন এবং এগুলি ভেরিয়েবলগুলিতে স্বাক্ষর করতে পারেন:
Action myAction = () => Console.WriteLine("I'm doing something Nifty!");
myAction();
অথবা
Function<object, string> myFunction = theObject => theObject.ToString();
string myString = myFunction(someObject);
আশা করি এটা কাজে লাগবে.