日期:2014-05-17  浏览次数:21120 次

求C#大神解释一下这道题 关于使用new关键字修饰.
C# code

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();
    }
}



输出结果出乎意料 为什么?

------解决方案--------------------
隐藏基类成员,因为父类也有Fun,所以,当你调用子类的Fun时,就不会调用父类的了
http://hi.baidu.com/gnaran/blog/item/45f5b75972ecda86800a18b0.html