C # => operatore?

Ho una domanda sull’operatore => in C #.

Sto guardando i campioni di Expression Blend 4. C’è una riga nell’esempio di contatto che include:

 //In C:\Program Files (x86)\Microsoft Expression\Blend 4\Samples\en\Contacts\ //Contacts\ViewModels\ContactsViewModel.cs: contactDetailWindow.Closed += (o, e) => { finishedCallback(contactDetailWindow.DialogResult); // Or, C:\Program Files (x86)\Microsoft Expression\Blend 4\Samples\en\ // Contacts\Contacts\ViewModels\ContactsViewModel.cs this.EditContact(newContact, dialogResult => { if (dialogResult.HasValue && dialogResult.Value) { this.Contacts.Add(newContact); } }); }; 

Cosa sta facendo effettivamente l’operatore => ? Sta scavalcando qualcosa?

=> è un operatore di espressione lambda che puoi considerare come una funzione anonima in javascript

in questo caso

 ContactDetailWindow.Closed += (o, e) => { finishedCallback(contactDetailWindow.DialogResult); 

sta creando una funzione che viene utilizzata come gestore per l’evento chiuso. Il compilatore può inferire i tipi di o ed E poiché conosce la definizione del delelegato chiuso.

Si chiama operatore lambda .

  b.Click += (s, e) => Log("Sender :" + s + "EventArgs " + e); 

è identico a

 b.Click += b_Click; void b_Click(object sender, EventArgs e) { Log("Sender :" + sender + "EventArgs " + e); } 

o

 b.Click += delegate(object sender, EventArgs e) { Log("Sender :" + sender + "EventArgs " + e); }; 

Questa è un’espressione lambda. Quanto segue definisce un metodo anonimo che prevede due parametri. All’interno delle parentesi graffe è ovviamente il corpo del metodo:

 (o, e) => { finishedCallback(contactDetailWindow.DialogResult) 

Le espressioni lambda sono difficili da spiegare in poche frasi. Immagino che tu debba dare un’occhiata alla documentazione e ad alcuni esempi.