我对C#中的=>运算符有疑问。

我正在查看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);
        }
   });
};
=>运算符实际上在做什么?是压倒一切吗?

最佳答案

=>是lambda表达式运算符,您可以将其视为javascript中的匿名函数

在这种情况下

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

它正在创建一个用作封闭事件处理程序的函数。编译器可以推断出o和E的类型,因为它知道封闭委托(delegate)的定义。

关于c# - C#=>运算符?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/5781268/

10-09 07:57
查看更多