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ù)。當泛型類創(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)容對大家的學習或者工作能帶來一定的幫助,同時也希望多多支持腳本之家!
相關(guān)文章
本文主要介紹了C#中利用GDI來繪制圖形和文字的方法,并提供的簡單的示例供大家參考學習,希望能夠?qū)Υ蠹矣兴鶐椭?/div> 2016-03-03
C#實現(xiàn)BBcode轉(zhuǎn)為Markdown的方法
這篇文章主要給大家介紹了關(guān)于C#實現(xiàn)BBcode轉(zhuǎn)Markdown的相關(guān)資料,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧。2018-02-02
使用設(shè)計模式中的工廠方法模式進行C#編程的示例講解
這篇文章主要介紹了使用設(shè)計模式中的工廠方法模式進行C#編程的示例講解,工廠方法模式可以看作是對簡單工廠模式的進一步擴展,需要的朋友可以參考下2016-02-02
Visual Studio關(guān)于C#項目Dll的引用多種方式(圖文詳解)
本文通過圖文并茂的形式給大家展示Visual Studio關(guān)于C#項目Dll的引用幾種方式 ,感興趣的朋友跟隨小編一起看看吧2024-08-08最新評論

