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();
    }
}
输出结果出乎意料 为什么?