2010-01-01 65 views
3

我正在浏览MVC项目中的示例asp.net代码,需要更好地了解=>操作符。堵塞=>搜索引擎是没有帮助的。寻求'=>'操作符的概述

THX

+0

这是一个骗局... – 2010-01-01 14:09:23

+1

他怎么能找到:) – JCasso 2010-01-01 17:36:28

+0

thx ....我没有尝试搜索SO - 不知道Lambda连接。 – justSteve 2010-01-03 10:58:01

回答

5

=>语法创建lambda expressions,这是小函数。

例如,线

Func<int, int> myFunc = i => 2 * i; 

声明Func<int, int>类型(委托,它有一个整数并返回另一个)的一个变量,并将其分配给一个lambda表达式,需要一个叫做i参数(编译器自动计算出iint)并返回2 * i

3

如上所述,=>运算符表示lambda表达式。这对匿名代表而言是短暂的。下面是实际的例子:

如果要筛选集合中的所有Person对象返回唯一的男人,其中()扩展方法需要一个Func键代表你可以创建一个名为委托这样的:

Func<Person, bool> isMale = delegate(Person peep) { return peep.Gender == "male"; }; 
    var men = from p in peeps.Where(isMale) 
       select p; 

或者你可以使用匿名委托这样的:

var women = from p in peeps.Where(delegate(Person peep) { return peep.Gender != "male"; }) 
       select p; 

拉姆达允许您使用速记申报匿名委托,像这样:

var women = from p in peeps.Where(x => x.Gender != "male") 
       select p; 

请注意delegate(Person peep)x之间的对应关系,以及'返回peep.Gender!=“男性”and 'x.Gender != "male"之间的对应关系。