什么()=> {} 意思?

时间:2012-05-04 10:23:25

标签: c#

我正在阅读拉开关here并遇到此代码。

可以somoone请解释什么是() => {}以及我应该阅读什么来理解这行代码?

var moveMap = new Dictionary<string, Action>()
{
    {"Up", MoveUp},
    {"Down", MoveDown},
    {"Left", MoveLeft},
    {"Right", MoveRight},
    {"Combo", () => { MoveUp(); MoveUp(); MoveDown(); MoveDown(); }}
};

moveMap[move]();

4 个答案:

答案 0 :(得分:9)

这是lambda expression

  

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

基本上你在这里构建一个新的临时函数,它只调用其他两个函数的组合。

如上所示,左侧的()表示它有一个空参数列表(就像您的其他函数一样)。右边的{}意味着它在一个块中执行几个语句,这使得它成为一个“语句lambda”,它的副作用被调用,而“lambda”则计算一个值。 / p>

答案 1 :(得分:4)

这是一个lambda expression。 MSDN将其称为“语句lambda”:

  

语句lambda类似于表达式lambda,除了   声明括在括号中。

字典包含一组Actions(代表)。 4是明确定义的,第5个是匿名函数,它调用其他2个。最后一行代码调用一个Action(它按键从字典中检索委托并调用它)。

答案 2 :(得分:4)

() => {/*code*/}是一个 lambda表达式,这是一种创建一个零参数的匿名委托的便捷方法。从本质上讲,它创建了一段可调用的代码,在您的情况下向上移动两次,然后向下移动两次。

您不限于没有参数的lambdas - 您可以使用参数创建一个:

Action<string> callable = (name) => {Console.WriteLine("Hello, {0}!", s);};
callable("world");
callable("quick brown fox");

答案 3 :(得分:3)

()这是匿名函数,没有参数

=>是lambda运算符(发音为Goes to)

Dictionary已使用KeyValuePair初始化,Last选项是一个匿名函数,不带参数并调用其他函数