Sự khác nhau giữa biểu thức lambda và biến vị ngữ trong .NET là gì?Sự khác nhau giữa biểu thức lambda và vị từ trong .NET là gì?
12
A
Trả lời
12
Vị từ là đại biểu (đối tượng hàm) trả về giá trị boolean. Lambda expressions có thể được sử dụng để xác định bất kỳ hàm ẩn danh nào, bao gồm các biến vị ngữ, ví dụ: để diễn tả một vị dưới hình thức của một biểu thức lambda:
Predicate<int> isEven2 = x => x % 2 == 0;
đó là chức năng tương đương với:
Func<int,bool> isEven = x => x % 2 == 0;
3
Predicate định nghĩa một tập hợp các tiêu chuẩn, trong khi biểu thức lambda là một chức năng ẩn danh. Bạn có thể sử dụng lambda ex. như một vị ngữ, nhưng điều đó không có nghĩa là chúng giống nhau.
+1
Được rồi, nhưng sự khác biệt chính xác là gì? – Phil
Một vị không * phải * để trở thành một chức năng ẩn danh. –
Đối với các phương thức lấy một Predicate làm đối số (List.FindAll() chẳng hạn), nó sẽ rất tốt nếu trình biên dịch nhận ra Func là một Predicate hợp lệ, vì chúng tương đương về mặt chức năng. Nhưng bạn chỉ có thể chạy nó thông qua một lambda như: 'var x = MyList.FindAll (i => isEven (i));' –
Graham