Sono tutti uguali. I primi due sono esempi di anonymous methods. L'ultimo è un esempio di lambda expression. I metodi anonimi e le espressioni lambda sono chiamati collettivamente funzioni anonime.
Sono stati introdotti metodi anonimi in C# 2; le espressioni lambda sono state introdotte nel C# 3 e per lo più hanno sostituito metodi anonimi. Si noti che le espressioni lambda possono anche essere convertite in expression trees che rappresentano il codice come dati anziché come IL e delegati.
Nota che Func<TResult>
, Func<T, TResult>
ecc. Sono solo esempi di tipi di delegati. È possibile convertire le funzioni anonime in qualsiasi tipo di delegato compatibile. Per esempio:
public delegate int Foo(string x);
Foo foo = text => text.Length;
fonte
2013-02-23 15:10:09
duplicato del [delegato parola chiave contro la notazione lambda] (http://stackoverflow.com/questions/208381/whats-the-difference-between-anonymous-methods-c-2-0- e-lambda-espressioni) e [Qual è la differenza tra la nuova Action() e una lambda?] (http://stackoverflow.com/questions/765966/what-is-the-difference-tra between-new-action-and -a-lambda) – nawfal