<分区>
假设有两个类,都是同一个父类(super class)的后代,如下所示:
class MySuperClass{}
class A : MySuperClass{}
class B : MySuperClass{}
那么这个赋值不会通过编译器:
MySuperClass p = myCondition ? new A() : new B();
编译器提示 A 和 B 不兼容(无法确定条件表达式的类型,因为“A”和“B”之间没有隐式转换 [CS0173])。但它们都是 MySuperClass 类型,所以在我看来这应该可行。并不是说这有什么大不了的;只需一个简单的转换就可以启发编译器。但它肯定是 C# 编译器中的一个障碍?你不同意吗?