使用三元运算符进行实例化

时间:2016-06-08 15:12:17

标签: 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)可解决此问题。

虽然这是一个简单的解决方法,但我想理解为什么会这样。这是语言的怪癖还是有明确的理由说明这种说法无效?

0 个答案:

没有答案