C# 为什么我们不能将一个类的列表项引用存储到另一个类的列表项中,即使它们是继承的? 公共A类 { } B级:A级 { } 公共课程 { 公共静态void Main(字符串[]args) { List my=新列表(); } }

C# 为什么我们不能将一个类的列表项引用存储到另一个类的列表项中,即使它们是继承的? 公共A类 { } B级:A级 { } 公共课程 { 公共静态void Main(字符串[]args) { List my=新列表(); } },c#,C#,因为我们可以将派生类的引用存储到基类引用。这里的列表是引用数组,我们应该能够存储如上所示的引用。 请澄清。 提前感谢。您需要创建父类的列表 public class A { } public class B:A { } public class Program { public static void Main(String[] args) { List<A> my = new List<B>(); } } 您需要创建父类的列

因为我们可以将派生类的引用存储到基类引用。这里的列表是引用数组,我们应该能够存储如上所示的引用。 请澄清。
提前感谢。

您需要创建父类的列表

public class A
{

}
public class B:A
{

}
public class Program
{
    public static void Main(String[] args)
    {
        List<A> my = new List<B>();
    }
}

您需要创建父类的列表

public class A
{

}
public class B:A
{

}
public class Program
{
    public static void Main(String[] args)
    {
        List<A> my = new List<B>();
    }
}

你可以想象一下,它不是<代码> < <代码> >代码> b <代码> > <代码>动物< /代码>和<代码>长颈鹿< /代码>。没有什么可以阻止你将一只
老虎
添加到列表中,因为它也是一种动物,但不属于长颈鹿列表。列表是可变的,这就是为什么如果允许的话(对长颈鹿和你)是危险的。对于数组,它是允许的。请阅读Tim schmelter感谢您的澄清。您可以想象并不是<代码> < <代码> >代码> b <代码> > <代码>动物< /代码>和<代码>长颈鹿< /代码>。没有什么可以阻止你将一只
老虎
添加到列表中,因为它也是一种动物,但不属于长颈鹿列表。列表是可变的,这就是为什么如果允许的话(对长颈鹿和你)是危险的。对于数组,它是允许的。阅读感谢Tim schmelter的澄清。
my.Add(new B());
my.Add(new A());