考虑以下分配给事件的 lambda 表达式。
foo.BarEvent += (s, e) => if (e.Value == true) DoSomething();
这看起来很简单,只包含一行代码。那么为什么我会从调试器中收到以下 2 个错误?
无效的表达式术语“如果”
只有 assignment、call、increment、decrement、await 和 new 对象表达式可以用作语句
要解决此问题,您所要做的就是将您的if
语句括在括号中。
foo.BarEvent += (s, e) => { if (e.Value == true) DoSomething(); };
//Errors now disappear!
我了解这些错误消息的含义。我不明白为什么单条件if
语句会成为编译器的问题,以及为什么第一个 lambda 赋值被认为是错误的。
有人可以解释这个问题吗?