我有这个代码:
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;