我正在观看Silverlight教程视频,我遇到了一个不熟悉的表达 在示例代码中。
什么是=> ? 它叫什么名字?你能给我一个链接吗? 我无法搜索它,因为它们是特殊字符。
代码:
var ctx = new EventManagerDomainContext();
ctx.Events.Add(newEvent);
ctx.SubmitChanges((op) =>
{
if (!op.HasError)
{
NavigateToEditEvent(newEvent.EventID);
}
}, null);
答案 0 :(得分:14)
如果您熟悉C#2中的匿名方法,则lambda表达式大多相似但更简洁。所以你得到的代码可以用匿名方法写成:
var ctx = new EventManagerDomainContext();
ctx.Events.Add(newEvent);
ctx.SubmitChanges(delegate(Operation op)
{
if (!op.HasError)
{
NavigateToEditEvent(newEvent.EventID);
}
}, null);
匿名方法的方面(例如捕获变量的行为)对lambda表达式的工作方式相同。 Lambda表达式和匿名方法统称为匿名函数。
然而,有一些不同之处:
Lambda表达式有许多快捷方式,可以使它们更简洁:
将这些放在一起,你可以得到:
IEnumerable<string> names = people.Select(person => person.Name);
Lambda表达式不支持支持“我不关心有多少参数”的匿名方法形式,例如
EventHandler x = delegate { Console.WriteLine("I was called"); };
答案 1 :(得分:11)
lambda表达式是anonymous function,可用于创建delegates或expression tree类型。通过使用lambda表达式,您可以编写本地函数,这些函数可以作为参数传递或作为函数调用的值返回...
好哇!
答案 2 :(得分:1)
我无法搜索它,因为它们是特殊字符。
有时老式的方式是最好的。这对我有用:
Index
选项卡=>