882
技術社區[雲棲]
“多態”一個需要注意的問題
在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並不支持多態。
}
}
{
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並不支持多態。
}
}
最後更新:2017-04-02 00:06:27