将列表添加到另一个列表类

问题描述 投票:-1回答:1

我的代码有3个类(a,b,c),即2(b,c)类继承a。并且我有一个清单。 (列出mylist)我的问题是关于添加来自b类或c类的元素

   public class A
{
    public int x;
    public int y;

    public A(int x, int y)
    {
        this.x = x;
        this.y = y;

    }

}

public class B : A
{
    public int z;

    public B(int x, int y, int z) : base(x, y)
    {

    }
}
class Program
{
    static void Main(string[] args)
    {
        var myA = new List<A>();

        myA.Add(new A(1, 2));
        myA.Add(new B(3, 4, 5));


        Console.WriteLine(myA[1]); 

        Console.WriteLine("0.x=" + myA[0].x + "--0.y=" + myA[0].y);
        Console.WriteLine("1.x=" + myA[1].x + "--1.y=" + myA[1].y + "--1.z=");// ı dont see myA.z 
c#
1个回答
1
投票

我已经删除了我以前的答案,因为你经常更新这个问题。

您没有看到该属性的原因是(如注释中所述),该列表仅包含一个“契约”,以包含类A的实例。即使它也包含了类别(例如类B),它仍然无法访问B的属性,因为我们只能“确定”列表中的元素至少包含所有行为和属性A

这是为了确保我们不会意外地尝试访问运行时期间A实例不存在的属性。

© www.soinside.com 2019 - 2024. All rights reserved.