Trong .NET 4.0, có một phương pháp đại biểu built-in:Xin giải thích về Func đại biểu trong .NET 4.0
public delegate TResult Func<in T, out TResult>(T arg);
Nó được sử dụng trong các phương pháp extesion LINQ, ví dụ:
IEnumerable<TSource> Where<TSource>(this IEnumerable<TSource> source, Func<TSource, bool> predicate);
tôi không hiểu rõ về đại biểu Func, tại sao biểu thức lambda sau đây khớp với nó:
// p is a XElement object
p=>p.Element("firstname").Value.StartsWith("Q")
Nếu bạn thay đổi từ 'phương thức' để hoạt động trong ngữ cảnh này, tôi sẽ đồng ý với câu trả lời của bạn và sẽ upvote nó. –
@Lajos no, nó sẽ ** không chính xác ** để làm điều đó; C# nói riêng * không có * chức năng; một đại biểu như 'Func' liên kết với một ** phương pháp **. –
Vâng, bạn có thể tạo Mô-đun nơi bạn có thể thêm các chức năng không phải là một phần của bất kỳ lớp nào, vì vậy, C# cũng có chức năng, không chỉ các phương thức. Tôi gần như chắc chắn (nhưng không kiểm tra) rằng một hàm trong một mô-đun có thể là một biến vị ngữ. Tôi có thể sai trong phần thứ hai của bình luận này mặc dù. –