请原谅我,如果这个尖叫新手但=>
在C#中的含义是什么?上周我正在做一个演讲,这个运营商(我认为)是在ORM的背景下使用的。在我回到笔记之前,我并没有真正关注语法的细节。“=>”是什么意思?
回答
在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);
我从来没有注意到当你将lambda与'小于或等于'粘在一起时有多混淆。它最终看起来像所有箭头指向我。 – 2009-07-28 20:09:30
这是一个lambda运算符,是lambda expression的一部分。
所有lambda表达式使用拉姆达 运算符=>,它读作 “去 于”。 lambda 运算符的左侧指定输入 参数(如果有的话),并且右侧 包含表达式或语句 块。 lambda表达式x => x * x被读取为“x转到x次x”。
它是简写为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中定义的匿名委托。
一个常见的地方看到这是一个事件处理程序。通过使用
this.Loaded += (o, e) => {
// code
}
您已经定义了一个匿名方法处理Loaded事件(它没有名字):你会经常有由拉姆达用下面的代码来处理AA页面加载事件类型lambda表达式。它会读作“o,e去......用foo定义方法”。
这是声明匿名函数的语法,在C#中称为“lambda表达式”。
例如,(int p) => p * 2
表示一个函数,它接受一个整数并将其乘以2。
从技术上讲,整体(int p)=> p * 2是一个lambda表达式。 =>只是lambda运算符。 – 2009-07-28 20:17:30
这是“lambda操作符”,并且您将其读作“转至”。假设你有声明:
doSomething(x => x + " hi");
可以代替“=>”在你的心中有这样的:
doSomething(delegate (string x) { return x + " hi" });
正如你所看到的,它提供了一个速记的挫折感。编译器会计算出您传递的变量的类型,并允许您摆脱传递签名变量的代码的函数签名和包围。
由于没有人提到它,但在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
- 1. Groovy,什么意思 - >意思是
- 2. “ - >”是什么意思?
- 3. {< >}是什么意思?
- 4. <+>是什么意思?
- 5. '=>'是什么意思?
- 6. <>是什么意思?
- 7. <>是什么意思?
- 8. “outer =>”是什么意思?
- 9. “=>”是什么意思?
- 10. `^^^`和`〜>`是什么意思?
- 11. “ - >”是什么意思?
- 12. `()=> Unit`是什么意思?
- 13. 是什么意思:是什么意思?
- 14. > +和> - 是什么意思在C#
- 15. a >> = b是什么意思?
- 16. >>和0xfffffff8是什么意思?
- 17. 这是什么意思? >> ActionController :: InvalidAuthenticityToken
- 18. “somevar >> 0”是什么意思?
- 19. 什么是(int - > int) - >(int - > int)是什么意思?
- 20. “ptr = ptr - > next”这是什么“ - >”是什么意思? (C++)
- 21. =>在php中是什么意思?
- 22. 数据( - >)a b是什么意思?
- 23. “<indentifier>预计”是什么意思?
- 24. 这里“2>&1”是什么意思?
- 25. <String,String>是什么意思?
- 26. 这是什么意思? <variable> ==“”
- 27. 符号<>是什么意思?
- 28. “<!DOCTYPE html>”是什么意思?
- 29. <[email protected]>是什么意思?
- 30. #include <crtdll/stddef.h>是什么意思?
这是一个重复。我找不到那一个。 – 2009-07-28 19:57:20
虽然这很难搜索。即使在Google上。 – 2009-07-28 20:16:51
他不知道它被称为“lambda操作符”。 – 2009-07-28 20:21:40