1.實例化對象,執行構造函數。
public class Test { public Test(string name) { Console.WriteLine(name); } } public class Test2 { public void Func() { //new 執行Test類中的Test(string name) Test test=new Test("Hello World"); } }
2.泛型約束條件:無參構造函數(僅無參構造函數,有參不行)
public T ItemFactory<T> where T : new() { public T GetNewItem() { return new T(); } }
3.覆蓋基類屬性和方法(與override不同,override重寫,方法屬性必須有abstract或virtual,new覆蓋,可以修飾
(除abstract)任何方法和屬性;此兩者互斥,最大區別是子類轉父類,override是始終調用子類方法,
而new是調用對應類的方法)
new 位置可以放在首位,也可以在中間。
public class BaseA { public int x = 1; public void Invoke() { Console.WriteLine(x.ToString()); } public int TrueValue { get { return x; } set { x = value; } } } public class DerivedB : BaseA { //new 位置可以放在前面,也可以放在public 后面 new public int x = 2; new public void Invoke() { Console.WriteLine(x.ToString()); } new public int TrueValue { get { return x; } set { x = value; } } }
