Подтвердить что ты не робот

С# => оператор?

У меня вопрос о операторе => в С#.

Я просматриваю образцы Expression Blend 4. В примере контакта есть одна строка, которая включает в себя:

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

Что действительно делает оператор =>? Это что-то переопределяет?

4b9b3361

Ответ 1

= > является оператором выражения лямбда, который вы можете рассматривать как анонимную функцию в javascript

в этом случае

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

он создает функцию, которая используется как обработчик закрытого события. Составитель может вывести типы o и E, поскольку он знает, что происходит с закрытым делегататом.

Ответ 2

Он назвал lambda operator.

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

совпадает с

b.Click += b_Click;

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

или

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

Ответ 3

Это лямбда-выражение. Нижеследующее определяет метод анома, ожидающий два параметра. Внутри фигурных скобок, очевидно, находится тело метода:

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

Лямбда-выражения трудно объяснить в нескольких предложениях. Думаю, вам нужно взглянуть на документацию и несколько примеров.