1

我有这个代码:

Action<A, B> fnUpdate = (someBool) ? (a, b) => a.propOne = b : (a, b) => a.propTwo = d;

为什么编译器不能解析 and 的类型ab仅仅因为它是在三元运算符中分配的?从表面上看,这似乎很简单。

4

2 回答 2

1

C# 编译器尝试独立创建 lambda,并且无法明确确定类型。因此,将其按预期工作....

Action<A, B> fnUpdate = (someBool) 
                       ? (Action<A, B> (a, b) => a.propOne = b 
                       : (Action<A, B> (a, b) => a.propTwo = d);
于 2013-05-17T08:28:22.187 回答
0

您需要至少转换以下两个函数之一:

Action<A, B> fnUpdate = someBool
   ? (Action<A, B>)((a, b) => a.propOne = b)
   : (a, b) => a.propTwo = b;
于 2013-05-17T08:29:54.597 回答