Derived Class对象如何添加到Base Class对象List

Fai*_*ist 7 c# oop polymorphism inheritance upcasting

鉴于以下代码,我从Shape继承了一个Circle:

class Shape
{
    void Draw();
}

class Circle : Shape
{
}

void Main(string[] args)
{
    Shape s = new Shape();
    Shape s2 = new Shape();
    Circle c = new Circle();

    List<Shape> ShapeList = new List<Shape>();

    ShapeList.Add(s);
    ShapeList.Add(s2);
    ShapeList.Add(c);
}
Run Code Online (Sandbox Code Playgroud)

怎么可以c加入ShapeList

Ser*_*rvy 9

A Circle 是a Shape,因为Circle扩展Shape.因此,您可以始终将Circle对象视为一个对象,Shape因为我们可以绝对确定可以在a上执行的所有操作也可以在a Shape上执行Circle.

  • @JMonsorno我在这里看不到拳击的相关性.这里没有值类型,隐式装箱仅适用于值类型. (2认同)
  • @JMonsorno我*高度*建议你阅读整篇文章,开始完成,然后再回复.我可以向你保证,拳击对这个问题没有任何意义,而你只是通过声明它的相关来让自己看起来很糟糕.隐式语言装箱仅适用于值类型; 这里没有值类型,所以拳击不适用. (2认同)