如果你是一名语言设计师,你会如何忽略lambdas更简洁的参数?

时间:2009-07-04 03:51:15

标签: lambda language-design

基于this,你如何更加忽视参数?

var m = menuStrip.Items.Add(“Hello”,null,delegate {MessageBox.Show(“Como Esta Mundo”);});

我正在思考:

var m = menuStrip.Items.Add(“Hello”,null,==> MessageBox.Show(“Como Esta Mundo”));

var m = menuStrip.Items.Add(“Hello”,null,?=> MessageBox.Show(“Como Esta Mundo”));

或者也许这样:

var m = menuStrip.Items.Add(“Hello”,null,?=> MessageBox.Show(“Como Esta Mundo”));

你会采取什么措施?

<语言进化观察> 他们甚至添加?操作者的语言,这确实很美。现在我想如果他们想要反过来(即NullIf运算符),如果你想把某些东西视为相同的“”或者零等于null< / language evolution observation>

1 个答案:

答案 0 :(得分:2)

好吧,就像匿名方法一样,你必须知道你试图将lambda表达式转换为的编译时类型(除非C#开始支持自由函数,这是一个更大的变化)。

我非常喜欢?=>虽然:

Action<int> foo = ?=> Console.WriteLine("Okay");
EventHandler handler = ?=> Console.WriteLine("Okay too");

现在ToolStripCollection.Add明确声明EventHandler为委托,您的示例就可以了。但这不会:

control.Invoke(?=> Console.WriteLine("No no no"));

这里编译器不知道尝试将lambda表达式转换为哪种类型,因此需要强制转换 - 就像今天的匿名方法一样。