Đúng Chính xác, sự khác biệt duy nhất là thực tế nó trả về một giá trị.
Đơn giản hóa (không sử dụng biểu thức):
List<T>.ForEach
Thực hiện một hành động, nó không mong đợi một kết quả trả lại.
Vì vậy, một Action<T>
đại biểu sẽ đủ .. nói:
List<T>.ForEach(param => Console.WriteLine(param));
cũng giống như nói:
List<T>.ForEach(delegate(T param) { Console.WriteLine(param); });
sự khác biệt là kiểu param và decler đại biểu được suy ra bằng cách sử dụng và không cần niềng răng trên một phương thức nội tuyến đơn giản.
Trong khi
List<T>.Where
Có một chức năng, mong đợi một kết quả.
Vì vậy, một Function<T, bool>
mong đợi:
List<T>.Where(param => param.Value == SomeExpectedComparison);
tương tự như:
List<T>.Where(delegate(T param) { return param.Value == SomeExpectedComparison; });
Bạn cũng có thể khai báo các phương thức này nội tuyến và gán chúng cho các biến IE:
Action myAction = () => Console.WriteLine("I'm doing something Nifty!");
myAction();
hoặc là
Function<object, string> myFunction = theObject => theObject.ToString();
string myString = myFunction(someObject);
Tôi hi vọng cái này giúp được.