我什么时候应该使用C#3.0附带的lambda表达式?

时间:2010-01-12 06:10:47

标签: c# c#-3.0 lambda

Hai guys,

我的开发人员今天早上谈论的是lambda表达式。所以我决定在这里问这个问题

  • 什么时候应该使用lambda表达式    哪个附带C#3.0?

4 个答案:

答案 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从其父项中删除时,最好还是手动删除所有事件处理程序。

对于其他一切,我认为它们确实提高了可读性,因此请自行判断。