Ya Tepat, satu-satunya perbedaan adalah fakta mengembalikan nilai.
Penyederhanaan (tidak menggunakan ekspresi):
List<T>.ForEach
Mengambil tindakan, itu tidak mengharapkan hasil pengembalian.
Jadi seorang Action<T>
delegasi akan cukup .. katakan:
List<T>.ForEach(param => Console.WriteLine(param));
sama dengan mengatakan:
List<T>.ForEach(delegate(T param) { Console.WriteLine(param); });
perbedaannya adalah bahwa tipe param dan deklarasi delegasi disimpulkan oleh penggunaan dan kawat gigi tidak diperlukan pada metode inline sederhana.
Dimana sebagai
List<T>.Where
Mengambil fungsi, mengharapkan hasil.
Jadi yang Function<T, bool>
diharapkan:
List<T>.Where(param => param.Value == SomeExpectedComparison);
yang sama dengan:
List<T>.Where(delegate(T param) { return param.Value == SomeExpectedComparison; });
Anda juga dapat mendeklarasikan metode ini secara inline dan menandainya dengan variabel IE:
Action myAction = () => Console.WriteLine("I'm doing something Nifty!");
myAction();
atau
Function<object, string> myFunction = theObject => theObject.ToString();
string myString = myFunction(someObject);
Saya harap ini membantu.