Ho letto che C# lambda può essere inserito implicitamente convertiti in azione o Func, ma lambda non può essere eseguito direttamente Define a lambda function and execute it immediately Ad esempio:Qual è il vero tipo di lambda in C#?
int n = (()=>5)(); //doesn't work
int n = ((Func<int>)(()=>5))(); //works
Allora, qual è il tipo effettivo di lambda e il motivo per cui non può essere chiamato direttamente? È perché il sistema di tipo C# è "più debole" di quello di Haskell o di Scala?
Tipo anonimo ??. –
La risposta nella domanda collegata è valida per la tua domanda. Il compilatore C# ha bisogno di conoscere il contesto, che è o un compito o un casting. Nel primo esempio non si utilizza né – Leri
Il sistema di tipi non è correlato a questo. 'Dim n = Function() 5' funziona bene in VB.NET, ed è simile in F #, e hanno lo stesso sistema di tipo sottostante. Questo è solo un problema con C#. –