为什么无法确定条件表达式(抽象类型之间的隐式转换)

时间:2019-07-05 13:35:20

标签: c#

我发现了很多关于条件表达式的文章,但是我不确定为什么它会引发编译错误(由于没有隐式转换,因此无法确定条件表达式的类型)。

有两个class,每个继承自抽象基础class, 为什么不能用条件表达式创建基本类型的对象?

class abstract FigureBase
class Triangle : FigureBase
class Circle : FigureBase`

static void Main(string[] args)
   {
       FigureBase fig;
       fig = (true) ? new Circle() : new Triangle();
       Console.ReadKey();
   }

当将表达式侧之一转换为基本类型时可以使用:

fig = (true) ? new Circle() : (FigureBase)new Triangle();

fig = (true) ? (FigureBase)new Circle() : new Triangle();

Found

  

如果x具有X类型,而y具有Y类型,则

     
    

如果存在从X到Y的隐式转换(第6.1节),但不存在从Y到X的转换,       那么Y是条件表达式的类型。

         

如果存在从Y到X的隐式转换(第6.1节),但不存在从X到Y的转换,       那么X是条件表达式的类型。

         

否则,无法确定表达式类型,并且会发生编译时错误       发生。

  

但是如果X和Y的类型为Z,该怎么办?

0 个答案:

没有答案