czytałem, że C# lambdas można imlicitly konwertowane do Akcji lub Func, ale lambda nie mogą być wykonywane bezpośrednio Define a lambda function and execute it immediately Na przykład:Jaki jest faktyczny typ lambda w C#?
int n = (()=>5)(); //doesn't work
int n = ((Func<int>)(()=>5))(); //works
Więc jaki jest rzeczywisty typ lambda i dlatego nie mogą być bezpośrednio nazywa? Czy to dlatego, że system typu C# jest "słabszy" niż system Haskella czy Scala?
Anonimowy typ ??. –
Odpowiedź w połączonym pytaniu jest ważna dla Twojego pytania. Kompilator języka C# musi znać kontekst, który jest albo przydziałem albo rzutowaniem. W pierwszej próbce nie robisz ani – Leri
System typu nie jest z tym związany. 'Dim n = Function() 5' działa dobrze w VB.NET i jest podobny w F # i ma ten sam bazowy system typów. To tylko problem z C#. –