前段時間乙個朋友問到new關鍵字有幾種用法,雖說在日常程式設計中經常用到這個小傢伙,但它到底有幾種用法還真沒有留意過,現將從網上總結出的資料記下以供同仁學習 -_-!
(1)new 運算子 用於建立物件和呼叫建構函式。
(2)new 修飾符 用於隱藏基類成員的繼承成員。
(3)new 約束 用於在泛型宣告中約束可能用作型別引數的引數的型別。
new
運算子1.
用於建立物件和呼叫建構函式
例:class_test myclass = new class_test();
2.也用於為值型別呼叫預設的建構函式
例:int myint = new int();
myint
初始化為
0,它是
int
型別的預設值。該語句的效果等同於:
int myint = 0;
3.不能過載
new
運算子。
4.如果
new
運算子分配記憶體失敗,則它將引發
outofmemoryexception
異常。
new
修飾符使用
new
修飾符顯式隱藏從基類繼承的成員。若要隱藏繼承的成員,請使用相同名稱在派生類中宣告該成員,並用
new
修飾符修飾它。
請看下面的類:
1public
class
myclass23
89}10
在派生類中用
invoke
名稱宣告成員會隱藏基類中的
invoke
方法,即:
1public
class
myderivedc : myclass23
67}8
但是,因為字段
x 不是通過類似名隱藏的,所以不會影響該欄位。
通過繼承隱藏名稱採用下列形式之一:
1.引入類或結構中的常數、指定、屬性或型別隱藏具有相同名稱的所有基類成員。
2.引入類或結構中的方法隱藏基類中具有相同名稱的屬性、欄位和型別。同時也隱藏具有相同簽名的所有基類方法。
3.引入類或結構中的索引器將隱藏具有相同名稱的所有基類索引器。
4.在同一成員上同時使用
new
和override
是錯誤的。
注意:在不隱藏繼承成員的宣告中使用
new
修飾符將生成警告。 示例
在該例中,基類
mybasec
和派生類
myderivedc
使用相同的欄位名
x,從而隱藏了繼承欄位的值。該例說明了
new
修飾符的使用。同時也說明了如何使用完全限定名訪問基類的隱藏成員。
1using
system;23
public
class
mybasec45
1213
1415
public
class
myderivedc : mybasec
1617
4243}44
輸出100 55
22 如果移除
new
修飾符,程式將繼續編譯和執行,但您會收到以下警告:
the keyword new is required on 'myderivedc.x' because it hides inherited member 'mybasec.x'.
如果巢狀型別正在隱藏另一種型別,如下例所示,也可以使用
new
修飾符修改此巢狀型別。 示例
在該例中,巢狀類
myclass
隱藏了基類中具有相同名稱的類。該例不僅說明了如何使用完全限定名訪問隱藏類成員,同時也說明了如何使用
new
修飾符消除警告訊息。
1using
system;23
public
class
mybasec45
1617}18
1920
21public
class
myderivedc : mybasec
2223
3637
3839
public
static
void
main()
4041
6061}62
輸出100
200
New 關鍵詞的三種用法 C
1 new 運算子 用於建立物件和呼叫建構函式。2 new 修飾符 用於隱藏基類成員的繼承成員。3 new 約束 用於在泛型宣告中約束可能用作型別引數的引數的型別。new 運算子 1.用於建立物件和呼叫建構函式 例 class test myclass new class test 2.也用於為值型...
C 程式設計中的 New 關鍵詞的幾種用法
前段時間乙個朋友問到c 的new關鍵字有幾種用法,雖說在日常程式設計中經常用到這個小傢伙,但它到底有幾種用法還真沒有留意過,現將從網上總結出的資料記下以供同仁學習。1 new 運算子 用於建立物件和呼叫建構函式。2 new 修飾符 用於隱藏基類成員的繼承成員。3 new 約束 用於在泛型宣告中約束可...
C 程式設計中的 New 關鍵詞的幾種用法
1.值型別與引用型別 結構是值型別 值型別在堆疊上分配位址,所有的基型別都是結構型別,例如 int 對應system.int32 結構,string 對應 system.string 結構 通過使用結構可以建立更多的值型別 類是引用型別 引用型別在堆上分配位址 2 繼承性 結構 不能從另外乙個結構或...