English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية
Come suggerisce il nome, un metodo anonimo non ha nome. Puoi definire un metodo anonimo in C# utilizzando la chiave parole chiave delegate e assegnarlo a una variabile di tipo delegate.
In un metodo anonimo non è necessario specificare il tipo di ritorno, è inferito dalla statement return all'interno del corpo del metodo.
public delegate void Print(int value); static void Main(string[] args) { Print print = delegate(int val) { Console.WriteLine("Internamente al metodo anonimo. Valore: {0}", val); } print(100); }
Internamente al metodo anonimo. Valore: 100
Un metodo anonimo può accedere a variabili definite in una funzione esterna.
public delegate void Print(int value); static void Main(string[] args) { int i = 10; Print prnt = delegate(int val) { val += i; Console.WriteLine("Metodo anonimo: {0}", val); } prnt(100); }
Metodo anonimo: 110
Puoi anche passare un metodo anonimo a un metodo che accetta un delegato come parametro.
Nell'esempio seguente, PrintHelperMethod() utilizza il primo parametro del delegato Print:
public delegate void Print(int value); class Program { public static void PrintHelperMethod(Print printDel, int val) { val += 10; printDel(val); } static void Main(string[] args) { PrintHelperMethod(delegate(int val) { Console.WriteLine("Metodo anonimo: {0}", val); }, 100); } }
Metodo anonimo: 110
saveButton.Click += delegate(Object o, EventArgs e) { System.Windows.Forms.MessageBox.Show("Salvataggio completato con successo!"); }
C# 3.0 ha introdotto l'espressione lambda, che lavora allo stesso modo dei metodi anonimi.
Non può contenere istruzioni di transizione come goto, break o continue.
Non può accedere ai parametri ref o out di un metodo esterno.
Non può possedere o accedere a codice non sicuro.
Non può essere utilizzato nel lato sinistro dell'operatore is.
È possibile definire metodi anonimi utilizzando la parola chiave delegate
I metodi anonimi devono essere assegnati a un delegato.
I metodi anonimi possono accedere a variabili o funzioni esterne.
I metodi anonimi possono essere passati come parametri.
I metodi anonimi possono essere utilizzati come gestori di eventi.