什么是“=>”意思?

时间:2009-07-28 19:50:23

标签: c# .net .net-3.5 lambda

原谅我,如果这会尖叫新手,但=>在C#中意味着什么?我上周在一个演示文稿中,这个操作符(我认为)是在ORM的上下文中使用的。在我回到笔记之前,我并没有真正关注语法的细节。

7 个答案:

答案 0 :(得分:13)

在C#中,lambda operator写成“=>” (朗读时通常发音为“进入”)。这意味着左侧的参数被传递到右侧的代码块(lambda函数/匿名委托)。

因此,如果您有一个Func或Action(或任何具有更多类型参数的表兄弟),那么您可以为它们分配一个lambda表达式,而不是需要实例化一个委托或者有一个单独的方法来进行延迟处理:

//creates a Func that can be called later
Func<int,bool> f = i => i <= 10;
//calls the function with 12 substituted as the parameter
bool ret = f(12);

答案 1 :(得分:8)

由于没有人提及它,在VB.NET中你会使用function关键字而不是=&gt;,如下所示:

dim func = function() true
'or
dim func1 = function(x, y) x + y

dim result = func() ' result is True
dim result1 = func1(5, 2) ' result is 7

答案 2 :(得分:7)

这是声明lambda的简写。

i => i++

与写作相同(

):

delegate(int i)
{
    i++;
}

在上下文中:

void DoSomething(Action<int> doSomething)
{
    doSomething(1);
}

DoSomething(delegate(int i) { i++; });
//declares an anonymous method
//and passes it to DoSomething

与写作相同(

):

void increment(int i)
{
    i++;
}

只是没有给它起一个名字,它允许你在线声明一个函数,称为“匿名”函数。

答案 3 :(得分:3)

当大声说出运算符是lambda(转到)运算符时,它有助于定义您在lambda中定义的匿名委托。

一个常见的地方是使用事件处理程序。您将经常有一个页面加载类型事件,由lambda处理,代码如下:

this.Loaded += (o, e) => { 

// code

}

您已使用lambda表达式定义了一个匿名处理Loaded事件的方法(它没有名称)。它会读作“o,e转到......用foo定义方法。”

答案 4 :(得分:3)

这是“lambda运算符”,您将其视为“转到”。说你有声明:

doSomething(x => x + " hi");

您可以替换“=&gt;”在你的脑海里:

doSomething(delegate (string x) { return x + " hi" });

正如你所看到的,它提供了一个速记。编译器会计算出您传递的变量的类型,并允许您删除函数签名并将您传递签名变量的代码括起来。

答案 5 :(得分:1)

它是一个lambda运算符,是lambda expression的一部分。

  

所有lambda表达式都使用lambda   operator =&gt;,读作“去   到了。“lambda的左边   运算符指定输入   参数(如果有的话)和右侧   持有表达或陈述   块。 lambda表达式x =&gt; X *   x读作“x转到x乘x。”

答案 6 :(得分:1)

声明一个匿名函数的语法,在C#中称为“lambda表达式”。

例如,(int p) => p * 2表示一个取整数并将其乘以2的函数。