我正在阅读拉开关here并遇到此代码。
可以somoone请解释什么是() => {}
以及我应该阅读什么来理解这行代码?
var moveMap = new Dictionary<string, Action>()
{
{"Up", MoveUp},
{"Down", MoveDown},
{"Left", MoveLeft},
{"Right", MoveRight},
{"Combo", () => { MoveUp(); MoveUp(); MoveDown(); MoveDown(); }}
};
moveMap[move]();
答案 0 :(得分:9)
所有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选项是一个匿名函数,不带参数并调用其他函数