new在c#中有三種用法:
1.實例化對象
2.泛型約束
3.用在方法前。new和override的區別在於:override用於重寫父類的方法;new用於隱藏方法,它調用的方法來自於申明的類,如果申明的是父類,調用父類方法,聲明的是子類,則調用子類的方法,如果申明的對象時匿名的,則默認調用子類的方法。
public class New_Study { public virtual void Method1() { Console.WriteLine("PMethod1"); } public virtual void Method2() { Console.WriteLine("PMethod2"); } } public class ChildClass:New_Study { public override void Method1() { Console.WriteLine("override CMethod1"); } public new void Method2() { Console.WriteLine("new CMethod2"); } } [TestFixture] public class New_Study_Test { [Test] public void TestNew() { New_Study parent1 = new ChildClass(); parent1.Method1();//override CMethod1 parent1.Method2();//PMethod2 ChildClass child=new ChildClass(); child.Method1();//override CMethod1 child.Method2();//new CMethod2 var varTest = new ChildClass(); varTest.Method1();//override CMethod1 varTest.Method2();//new CMethod2 } }