我正在寻找一个很好的解释为什么一个代码无法编译,而其他的编译很好.
失败:
richTextBox1.Invoke(new MethodInvoker((() => { richTextBox1.AppendText("test"); })));
给出错误
Method name expected
在MethodInvoker之后的右括号上(.显然,我不能将lambda语句包装在括号中.
编译:
richTextBox1.Invoke(new MethodInvoker(() => { richTextBox1.AppendText("test"); }));
问题是 – 为什么?
我总是把它当作理所当然的,如果我想要的话,我可以把任何方法param包含在括号中,但显然lambda表达式并不是这样.我知道他们有点特别,但我仍然看不到很好的理由.也许我不明白一些关于语法的东西.我真的很想得到它.
顺便说一句,这在VS2008,.NET 3.5 SP1中呈现,我还没有在VS2010和.NET 4中测试它.