所有調用實例的運行時類型d因此,所有F(的)的調用應該在D.這個碼塊的輸出沒有意義的我
using System;
class A
{
public virtual void F() { Console.WriteLine("A.F"); }
}
class B: A
{
public override void F() { Console.WriteLine("B.F"); }
}
class C: B
{
new public virtual void F() { Console.WriteLine("C.F"); }
}
class D: C
{
public override void F() { Console.WriteLine("D.F"); }
}
class Test
{
static void Main() {
D d = new D();
A a = d;
B b = d;
C c = d;
a.F();
b.F();
c.F();
d.F();
}
}
聲明的F()方法
輸出爲:
B.F
B.F
D.F
D.F
不應該輸出爲:
D.F
D.F
D.F
D.F
您應該編輯問題標題到很多問題 – MarcinJuraszek 2013-04-08 07:08:54