हां, वास्तव में, एकमात्र अंतर यह तथ्य है कि यह एक मूल्य लौटाता है।
सरलीकरण (अभिव्यक्ति का उपयोग नहीं):
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; });
आप इन विधियों को इनलाइन भी घोषित कर सकते हैं और उन्हें IE को चर में निर्दिष्ट कर सकते हैं:
Action myAction = () => Console.WriteLine("I'm doing something Nifty!");
myAction();
या
Function<object, string> myFunction = theObject => theObject.ToString();
string myString = myFunction(someObject);
आशा है कि ये आपकी मदद करेगा।