相关疑难解决方法(0)

如何使用条件三元运算符在lambdas之间有条件地分配Func <>?

通常,在使用条件运算符时,这是语法:

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)

c# lambda conditional-operator

47
推荐指数
2
解决办法
4662
查看次数

标签 统计

c# ×1

conditional-operator ×1

lambda ×1