我的代码有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
我已经删除了我以前的答案,因为你经常更新这个问题。
您没有看到该属性的原因是(如注释中所述),该列表仅包含一个“契约”,以包含类A
的实例。即使它也包含了类别(例如类B
),它仍然无法访问B
的属性,因为我们只能“确定”列表中的元素至少包含所有行为和属性A
。
这是为了确保我们不会意外地尝试访问运行时期间A
实例不存在的属性。