“=>”是什么意思?

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

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

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

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

既然没人提到它,在VB.NET中你会使用function关键字而不是=>,如下所示:

 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 

这是宣布lambda的简写。

 i => i++ 

是(某种)与写作相同:

 delegate(int i) { i++; } 

在以下情况下:

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

与写作相同(有点)

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

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

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

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

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

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

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

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

您可以用以下内容替换“=>”:

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

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

它是一个lambda运算符,是lambda表达式的一部分。

所有lambda表达式都使用lambda运算符=>,它被读作“转到”。 lambda运算符的左侧指定输入参数(如果有),右侧包含表达式或语句块。 lambda表达式x => x * x被读为“x转到x乘以x”。

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

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