在C#中只有属性和方法能被声明为virtual,而字段则不能。因此注意下面例子中的问题。
public class Base
{
public int i = 10;
public virtual void Test()
{
Console.WriteLine(i);
}
}
public class Deliver : Base
{
public int i = 20;
public override void Test()
{
Console.WriteLine(i);
}
}
public class Class1
{
public static void Main(string[] args)
{
Deliver d = new Deliver();
Base b = d;
d.Test(); // 20
b.Test(); // 20
Console.WriteLine(b.i); // 10 问题就出在这,字段i并不支持多态。
}
}
时间: 2024-10-02 22:49:47