奇妙な振る舞いをしたので、それを理解したいと思います。しかし、私はウェブ上で良い答えを見つけていません:(
これが状況です。問題に焦点を当てるために名前とロジックを抽象化しました。A、B、C の 3 つの型を取得しました。B と C には、A オブジェクトに変換する暗黙の演算子が定義されています。
public class A
{
public static implicit operator A(B input){ /* Convert B to A */ }
public static implicit operator A(C input) { /* Convert C to A*/ }
}
public class B { }
public class C { }
次に、これを行うと、コードがコンパイルされて正常に動作します。
A myObject = null;
if (condition)
myObject = new B();
else
myObject = new C();
しかし、インラインifで同じロジックを書くと、エラーが発生しました:
A myObject = condition ? new B() : new C();
エラー :
Type of conditional expression cannot be determined because there is no implicit conversion between 'B' and 'C'
この動作について何か考えはありますか?
お時間をいただきありがとうございます。
よろしくお願いします。バグがないようにしてください。