public abstract class A
{
public A()
{
Console.WriteLine('A');
}
public virtual void Fun()
{
Console.WriteLine("A.Fun()");
}
}
public class B : A
{
public B()
{
Console.WriteLine('B');
}
public new void Fun()
{
Console.WriteLine("B.Fun()");
}
public static void Main()
{
A a = new B();
a.Fun();
}
}
输出结果出乎意料 为什么?
你将鼠标移到a.Fun()上面,可以清楚的看到void A.Fun();可以改成这样,执行B的fun
(a as B).Fun();
而不是
public override void Fun()