请考虑以下分配给事件的lambda表达式.
foo.BarEvent += (s, e) => if (e.Value == true) DoSomething();
Run Code Online (Sandbox Code Playgroud)
这看起来很简单,只包含一行代码.那么为什么我从调试器中得到以下2个错误?
无效的表达式术语'if'
只有赋值,调用,递增,递减,等待和新对象表达式才能用作语句
要解决此问题,您所要做的就是用if括号括起您的语句.
foo.BarEvent += (s, e) => { if (e.Value == true) DoSomething(); };
//Errors now disappear!
Run Code Online (Sandbox Code Playgroud)
我理解这些错误消息的含义.我不明白的是为什么单条件if语句会成为编译器的问题,以及为什么第一个lambda赋值被认为是破坏的.
有人可以解释一下这个问题吗?
Cod*_*ter 37
没有{ }你声明一个表达式主体,{ }它是一个语句体.请参阅Lambda表达式(C#编程指南):
因此,如果您需要语句而不是表达式,请使用大括号.
| 归档时间: |
|
| 查看次数: |
8218 次 |
| 最近记录: |