Hai guys,
我的开发人员今天早上谈论的是lambda表达式。所以我决定在这里问这个问题
答案 0 :(得分:5)
lambda表达式是一个匿名函数,可以包含表达式和语句,可用于创建委托或表达式树类型。
期望使用
del myDelegate = delegate(int x){return x*x; };
int j = myDelegate(5); //j = 25
你可以写
del myDelegate = x => x * x;
int j = myDelegate(5); //j = 25
答案 1 :(得分:2)
我不认为应该使用它们时有一般规则,但是如果我自己看,我倾向于在使用匿名方法时使用它们。大多数情况下,这会在使用ThreadPool
或使用LINQ查询在新线程中生成某些代码时发生。
ThreadPool示例:
ThreadPool.QueueUserWorkItem(state => {
// the code to run on separate thread goes here
});
LINQ:
var myItems = GetSomeIEnumerable()
.Where(o => o.SomeProperty.Equals("some value"));
.OrderBy(o => o.SomeOtherProperty);
答案 2 :(得分:1)
简短回答:请阅读SO最顶级投票人C# in depth的“Jon Skeet”。它是一本优秀的书,您将学习有关新C#3功能的所有内容,特别是何时使用它们,包括Lambda表达式。
答案 3 :(得分:0)
至少不要用于事件ála
<击> 撞击>
<击>myUserControl.Loaded += (sender, e) => DoSomething(); // coding horror!!!1 :-P
击> <击> 撞击>
因为截至目前,您仍然无法取消订阅和清理事情,因此很容易。当然有WeakEventHandler工厂和那里的东西,但是当UserControl从其父项中删除时,最好还是手动删除所有事件处理程序。
对于其他一切,我认为它们确实提高了可读性,因此请自行判断。