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