C# 關鍵字new用法


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; }
    }
}

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM