C#中new的幾種用法詳解
在 C# 中,new 關(guān)鍵字可用作運算符、修飾符或約束。
new 運算符
用于創(chuàng)建對象和調(diào)用構(gòu)造函數(shù)。
new 修飾符
用于向基類成員隱藏繼承成員。
new 約束
用于在泛型聲明中約束可能用作類型參數(shù)的參數(shù)的類型。
new 修飾符(C# 參考)
在用作修飾符時,new 關(guān)鍵字可以顯式隱藏從基類繼承的成員。隱藏繼承的成員意味著該成員的派生版本將替換基類版本。在不使用 new 修飾符的情況下隱藏成員是允許的,但會生成警告。使用 new 顯式隱藏成員會取消此警告,并記錄代之以派生版本這一事實。
若要隱藏繼承的成員,請使用相同名稱在派生類中聲明該成員,并使用 new 修飾符修飾該成員
new 運算符(C# 參考)
1.用于創(chuàng)建對象和調(diào)用構(gòu)造函數(shù)。例如:
Class1 o = new Class1();
2.也用于為值類型調(diào)用默認的構(gòu)造函數(shù)
例:int myInt = new int();
myInt 初始化為 0,它是 int 類型的默認值。該語句的效果等同于:int myInt = 0;
3.不能重載 new 運算符。
4.如果 new 運算符分配內(nèi)存失敗,則它將引發(fā) OutOfMemoryException 異常
new 約束(C# 參考)
new 約束指定泛型類聲明中的任何類型參數(shù)都必須有公共的無參數(shù)構(gòu)造函數(shù)。當(dāng)泛型類創(chuàng)建類型的新實例時,將此約束應(yīng)用于類型參數(shù),如下面的示例所示:
class ItemFactory<T> where T : new() { public T GetNewItem() { return new T(); } }
通過繼承隱藏名稱采用下列形式之一:
1.引入類或結(jié)構(gòu)中的常數(shù)、指定、屬性或類型隱藏具有相同名稱的所有基類成員。
2.引入類或結(jié)構(gòu)中的方法隱藏基類中具有相同名稱的屬性、字段和類型。同時也隱藏具有相同簽名的所有基類方法。
3.引入類或結(jié)構(gòu)中的索引器將隱藏具有相同名稱的所有基類索引器。
4.在同一成員上同時使用 new 和 override 是錯誤的。
注意:在不隱藏繼承成員的聲明中使用 new 修飾符將生成警告。
示例
在該例中,嵌套類 MyClass 隱藏了基類中具有相同名稱的類。該例不僅說明了如何使用完全限定名訪問隱藏類成員,同時也說明了如何使用 new 修飾符消除警告消息。
using System; public class MyBaseC { public class MyClass { public int x = 200; public int y; } } public class MyDerivedC : MyBaseC { new public class MyClass // nested type hiding the base type members { public int x = 100; public int y; public int z; } public static void Main() { // Creating object from the overlapping class: MyClass S1 = new MyClass(); // Creating object from the hidden class: MyBaseC.MyClass S2 = new MyBaseC.MyClass(); Console.WriteLine(S1.x); Console.WriteLine(S2.x); } } 輸出 100 200
以上就是本文的全部內(nèi)容,希望本文的內(nèi)容對大家的學(xué)習(xí)或者工作能帶來一定的幫助,同時也希望多多支持腳本之家!
相關(guān)文章
- 本文主要介紹了C#中利用GDI來繪制圖形和文字的方法,并提供的簡單的示例供大家參考學(xué)習(xí),希望能夠?qū)Υ蠹矣兴鶐椭?/div> 2016-03-03
C#實現(xiàn)BBcode轉(zhuǎn)為Markdown的方法
這篇文章主要給大家介紹了關(guān)于C#實現(xiàn)BBcode轉(zhuǎn)Markdown的相關(guān)資料,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧。2018-02-02使用設(shè)計模式中的工廠方法模式進行C#編程的示例講解
這篇文章主要介紹了使用設(shè)計模式中的工廠方法模式進行C#編程的示例講解,工廠方法模式可以看作是對簡單工廠模式的進一步擴展,需要的朋友可以參考下2016-02-02Visual Studio關(guān)于C#項目Dll的引用多種方式(圖文詳解)
本文通過圖文并茂的形式給大家展示Visual Studio關(guān)于C#項目Dll的引用幾種方式 ,感興趣的朋友跟隨小編一起看看吧2024-08-08最新評論