代码示例如下: abstract class Query { public void func1(int i) { Console.WriteLine("Query.func1"); } public virtual void func2(int ival) { func1(ival); } } class OrQuery : Query { new public void func1(int i) { Console.WriteLine("OrQuery.func1"); } public override void func2(int ival) { base.func1(ival); func1(ival); } } class TestClass { static void Main(string[] args) { //test1 OrQuery obj = new OrQuery(); obj.func1(11); obj.func2(11); //test2 Query q = new OrQuery(); q.func1(1024); ((OrQuery)q).func1(1024); q.func2(1024); } } 在运行程序前,先推测运行结果:对于重写的、未重写的、非虚拟的方法,c#采取的机制,和c++有些不同。