public abstract class A { public void CallMe() { Console.WriteLine(“I am A.”); } } public class B : A { new public void CallMe() { Console.WriteLine(“I am B.”); } } class Program { static void Main(string[] args) { A a = new B(); a.CallMe(); } } 输出是“我是A.” 为什么会这样? 这合理吗? 由Visual Studio 2012编译。