在
c# 中,
new
關鍵字可用作運算子或修飾符。
new
運算子用於在堆上建立物件和呼叫建構函式。
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
修飾符修飾它。
請看下面的類:
public class myclass
}在派生類中用
invoke
名稱宣告成員會隱藏基類中的
invoke
方法,即:
public class myderivedc : myclass
}但是,因為字段
x 不是通過類似名隱藏的,所以不會影響該欄位。
通過繼承隱藏名稱採用下列形式之一:
1.引入類或結構中的常數、指定、屬性或型別隱藏具有相同名稱的所有基類成員。
2.引入類或結構中的方法隱藏基類中具有相同名稱的屬性、欄位和型別。同時也隱藏具有相同簽名的所有基類方法。
3.引入類或結構中的索引器將隱藏具有相同名稱的所有基類索引器。
4.在同一成員上同時使用
new
和override
是錯誤的。
注意:在不隱藏繼承成員的宣告中使用
new
修飾符將生成警告。
示例在該例中,基類
mybasec
和派生類
myderivedc
使用相同的欄位名
x,從而隱藏了繼承欄位的值。該例說明了
new
修飾符的使用。同時也說明了如何使用完全限定名訪問基類的隱藏成員。
using system;
public class mybasec
public class myderivedc : mybasec }輸出
10055
22如果移除
new
修飾符,程式將繼續編譯和執行,但您會收到以下警告:
the keyword new is required on 'myderivedc.x' because it hides inherited member 'mybasec.x'.
如果巢狀型別正在隱藏另一種型別,如下例所示,也可以使用
new
修飾符修改此巢狀型別。
示例在該例中,巢狀類
myclass
隱藏了基類中具有相同名稱的類。該例不僅說明了如何使用完全限定名訪問隱藏類成員,同時也說明了如何使用
new
修飾符消除警告訊息。
using system;
public class mybasec
}public class myderivedc : mybasec
public static void
main
() }輸出
100200
本文參考《
msdn library – visual studio .net 2003
》
C new關鍵字用法
c 中的new用法總結 1.new operator 這是最常見的用法,如 class a a a new a 2.placement new 這個new僅在乙個已經分配好的記憶體指標上呼叫建構函式,因此會覆蓋原來的內容,如 a a1 new a a a2 new a1 a 那麼a2會覆蓋a1的值,...
C new關鍵字丟擲bad alloc
c new 關鍵字底層呼叫了malloc來分配記憶體,但是會出現申請記憶體失敗的情況。當new 申請記憶體失敗時,會丟擲bad alloc異常,那麼針對這種情況,我們有兩種處理方式。當new獲取記憶體失敗時,丟擲bad alloc異常,我們可以捕獲異常,但是這種方法非常繁瑣,我們在程式中可能會大量用...
關鍵字小結
在藍傑乙個月學習後,我們開班了,1015組,開班後上的第一節課是關鍵字,下面小結一下這節課的收穫。上完這節課後我發現原來平時敲的 裡這麼多關鍵字,我竟然不知道。1.訪問修飾符 private 私有的 public 公有的 protecte 受保護的 2.資料型別 void 空 byte 位元組型,8...