我有这个代码:
Action<A, B> fnUpdate = (someBool) ? (a, b) => a.propOne = b : (a, b) => a.propTwo = d;
为什么编译器不能解析 and 的类型a
,b
仅仅因为它是在三元运算符中分配的?从表面上看,这似乎很简单。
我有这个代码:
Action<A, B> fnUpdate = (someBool) ? (a, b) => a.propOne = b : (a, b) => a.propTwo = d;
为什么编译器不能解析 and 的类型a
,b
仅仅因为它是在三元运算符中分配的?从表面上看,这似乎很简单。
C# 编译器尝试独立创建 lambda,并且无法明确确定类型。因此,将其按预期工作....
Action<A, B> fnUpdate = (someBool)
? (Action<A, B> (a, b) => a.propOne = b
: (Action<A, B> (a, b) => a.propTwo = d);
您需要至少转换以下两个函数之一:
Action<A, B> fnUpdate = someBool
? (Action<A, B>)((a, b) => a.propOne = b)
: (a, b) => a.propTwo = b;