通常,在使用条件运算符时,这是语法:
int x = 6;
int y = x == 6 ? 5 : 9;
Run Code Online (Sandbox Code Playgroud)
没有什么花哨的,非常直接的.
现在,让我们在将Lambda分配给Func类型时尝试使用它.让我解释:
Func<Order, bool> predicate = id == null
? p => p.EmployeeID == null
: p => p.EmployeeID == id;
Run Code Online (Sandbox Code Playgroud)
这是相同的语法,应该工作吗?对?出于某种原因,没有.编译器提供了这个不错的神秘消息:
错误1无法确定条件表达式的类型,因为"lambda表达式"和"lambda表达式"之间没有隐式转换
然后我继续改变语法,这样它确实有效:
Func<Order, bool> predicate = id == null
? predicate = p => p.EmployeeID == null
: predicate = p => p.EmployeeID == id;
Run Code Online (Sandbox Code Playgroud)
我只是好奇为什么它不能以第一种方式工作?
(旁注:我最终不需要这段代码,因为我发现在将int值与null进行比较时,只需使用object.Equals)