Tôi đọc mà C lambdas # có thể được imlicitly chuyển thành hành động hoặc Func, nhưng lambda không thể được thực hiện trực tiếp Define a lambda function and execute it immediately Ví dụ:Loại lambda thực sự trong C# là gì?
int n = (()=>5)(); //doesn't work
int n = ((Func<int>)(()=>5))(); //works
Vì vậy, là những gì các loại thực tế của lambda và tại sao nó không thể được gọi trực tiếp? Có phải vì hệ thống kiểu C# là "yếu hơn" so với Haskell hay Scala?
Loại ẩn danh ??. –
Câu trả lời trong câu hỏi được liên kết là hợp lệ cho câu hỏi của bạn. Trình biên dịch C# cần phải biết ngữ cảnh, đó là một trong hai nhiệm vụ hoặc đúc. Trong mẫu đầu tiên bạn không phải – Leri
Hệ thống kiểu không liên quan đến điều này. 'Dim n = Function() 5' hoạt động tốt trong VB.NET, và nó tương tự trong F #, và chúng có cùng hệ thống kiểu cơ bản. Đây chỉ là vấn đề với C#. –