Evet Kesinlikle tek fark, bir değer döndürmesidir.
Sadeleştirme (ifadeleri kullanmamak):
List<T>.ForEach
Bir işlem yapar, bir dönüş sonucu beklemez.
Yani bir Action<T>
delege yeterli olur ..
List<T>.ForEach(param => Console.WriteLine(param));
demekle aynıdır:
List<T>.ForEach(delegate(T param) { Console.WriteLine(param); });
aradaki fark, param tipi ve delege deklerasyonunun kullanımla çıkarılması ve parantezlerin basit bir satır içi yöntemde gerekli olmamasıdır.
Buna karşılık
List<T>.Where
Sonuç bekleyen bir işlev alır.
Yani bir Function<T, bool>
beklenen:
List<T>.Where(param => param.Value == SomeExpectedComparison);
ki aynı:
List<T>.Where(delegate(T param) { return param.Value == SomeExpectedComparison; });
Ayrıca bu yöntemleri satır içinde bildirebilir ve IE değişkenlerine atayabilirsiniz:
Action myAction = () => Console.WriteLine("I'm doing something Nifty!");
myAction();
veya
Function<object, string> myFunction = theObject => theObject.ToString();
string myString = myFunction(someObject);
Umarım bu yardımcı olur.