标签: c# inheritance ternary-operator
让我们考虑以下几个类:
public interface A {} public class B:A {} public class C:A {}
我想用三元运算符在一行中创建B或C的实例:
A a = condition? new B() : new C();
此行无法编译(无隐式转换),但使用B投射C或(A)可解决此问题。
B
C
(A)
虽然这是一个简单的解决方法,但我想理解为什么会这样。这是语言的怪癖还是有明确的理由说明这种说法无效?