() => {} 是什么意思
本文关键字:是什么 意思 | 更新日期: 2023-09-27 18:33:15
我正在阅读 拉动这里的开关 并遇到了这段代码。
somoone能否解释一下什么是() => {}
以及我应该阅读什么才能理解那行代码?
var moveMap = new Dictionary<string, Action>()
{
{"Up", MoveUp},
{"Down", MoveDown},
{"Left", MoveLeft},
{"Right", MoveRight},
{"Combo", () => { MoveUp(); MoveUp(); MoveDown(); MoveDown(); }}
};
moveMap[move]();
这是一个
lambda表达式:
所有 lambda 表达式都使用 lambda 运算符
=>
,读作 "go to"。lambda 运算符的左侧指定输入参数(如果有),右侧保存表达式或语句块
基本上,您在这里构造一个新的临时函数,该函数仅调用其他两个函数的组合。
如上所示,左侧的()
表示它有一个空的参数列表(就像您的其他函数一样)。右侧的{}
表示它在一个块内执行多个语句,这使其成为"语句 lambda",因其副作用而被调用,与计算值的"表达式 lambda"相反。
() => {/*code*/}
是一个 lambda 表达式,这是一种创建采用零参数的匿名委托的便捷方法。本质上,它创建了一个可调用的代码段,在您的情况下,该代码向上移动两次,然后向下移动两次。
您不仅限于没有参数的 lambda - 您可以创建带有参数的 lambda:
Action<string> callable = (name) => {Console.WriteLine("Hello, {0}!", s);};
callable("world");
callable("quick brown fox");
这是一个 lambda 表达式。MSDN 将其称为"语句 lambda":
语句 lambda 类似于表达式 lambda,不同之处在于 语句括在大括号中。
字典包含一组Actions
(委托)。 4 个是显式定义的,第 5 个是匿名函数,它调用其他 2 个。最后一行代码调用操作(它按键从字典中检索委托并调用它)。
()
这是没有参数的匿名函数
=>
是 lambda 运算符(发音为 Goes to)
字典已使用 KeyValuePair 初始化,最后一个选项是一个匿名函数,它不带参数并调用其他函数