C # => opérateur?

J’ai une question à propos de l’opérateur => en C #.

Je regarde les échantillons Expression Blend 4. Il existe une ligne dans l’exemple Contact qui comprend:

 //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); } }); }; 

Que fait réellement l’opérateur => ? Est-ce prioritaire?

=> est un opérateur d’expression lambda que vous pouvez considérer comme une fonction anonyme en javascript

dans ce cas

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

il crée une fonction qui est utilisée comme gestionnaire pour l’événement fermé. Le compliant peut déduire les types de o et E puisqu’il connaît la définition du délélégé fermé.

C’est ce qu’on appelle l’ opérateur lambda .

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

est identique à

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

ou

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

C’est une expression lambda. Ce qui suit définit une méthode anormale qui attend deux parameters. À l’intérieur des brakets frisés se trouve évidemment le corps de la méthode:

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

Les expressions lambda sont difficiles à expliquer en quelques phrases. Je suppose que vous devez consulter la documentation et quelques exemples.