我对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/