如果我说的很新手,请原谅,=>
在C#中是什么意思?上周我参加了一个演示,这个运算符(我想)是在ORM的上下文中使用的。在回看我的笔记之前,我并没有真正注意到语法的细节。
C#中的lambda运算符写作"=>"(通常在朗读时发音为“goes to”)。它意味着左侧的参数被传递到右侧的代码块(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);
由于还没有人提到它,在VB.NET中,您需要使用函数关键字而不是=>,如下所示:
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<int> 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
}
doSomething(x => x + " hi");
doSomething(delegate (string x) { return x + " hi" });
正如你所看到的,它提供了一种非常简洁的方式。编译器会确定你传递的变量的类型,并允许你摆脱函数签名和括号,将代码传递给签名变量。
这是一个lambda运算符,是lambda表达式的一部分。
所有的lambda表达式都使用lambda运算符=>,它被读作“goes to”。lambda运算符的左侧指定输入参数(如果有),右侧包含表达式或语句块。lambda表达式x => x * x被读作“x goes to x times x”。
声明匿名函数的语法,在C#中被称为“lambda表达式”。
例如,(int p) => p * 2
表示一个函数,它接受一个整数并将其乘以二。