1

私はこのコードを持っています:

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

三項演算子で割り当てられているという理由だけで、コンパイラがaandの型を解決できないのはなぜですか? b額面どおり、非常に簡単に見えます。

4

2 に答える 2

1

C# コンパイラは、ラムダを個別に作成しようとするため、型を明確に判断できません。したがって、期待どおりに動作するようにキャストします....

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

2 つの関数の少なくとも 1 つをキャストする必要があります。

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