为什么.NET编译器要求对内联条件分配进行显式转换?

时间:2019-06-21 13:18:29

标签: c# casting conditional-statements ternary

以下代码尝试根据A变量是B还是condition实例化类true或类false的新实例。

A和类B都从接口I继承。

static void Main(string[] args)
{
    var condition = true;
    I i = condition ? new A() : new B();
}

interface I { }
class A : I { }
class B : I { }
  1. 为什么在尝试编译上述代码时编译器会发出以下错误?

错误CS0173:无法确定条件表达式的类型,因为在'Program.A'和'Program.B'之间没有隐式转换

  1. 为什么只显式地将 new A()new B()强制转换为I(例如(I)new A())可以解决该错误?

0 个答案:

没有答案