“=>”是什么意思?
原谅我,如果这会尖叫新手,但在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
的函数。