一、私有建構函式
說明:不能被例項化也就是不能被new
1.如果您不對建構函式使用訪問修飾符,則在預設情況下它仍為私有建構函式。但是,通常顯式地使用 private 修飾符來清楚地表明該類不能被例項化。
2.當沒有例項欄位或例項方法(如 math 類)時或者當呼叫方法以獲得類的例項時,私有建構函式可用於阻止建立類的例項
3.如果類中的所有方法都是靜態的,可考慮使整個類成為靜態的
class nlogpublic
static
double e = system.math.e; //
2.71828...
}
例子:
publicclass counter
public
static
int currentcount;
public
static
int incrementcount()
}class testcounter
", counter.currentcount);
}}
輸出:
new count: 101
二、靜態建構函式
說明:無論怎麼樣都會執行一次且只執行一次的
1.靜態建構函式用於初始化任何靜態資料,或用於執行僅需執行一次的特定操作。在建立第乙個例項或引用任何靜態成員之前,將自動呼叫靜態建構函式。
2.靜態建構函式具有以下特點:
class ******class}
例子:在此示例中,類 bus 有乙個靜態建構函式和乙個靜態成員 drive()。當呼叫 drive() 時,將呼叫靜態建構函式來初始化類。
publicclass bus
public
static
void drive()
}class testbus
}
輸出:
the static constructor invoked.the drive method invoked.
三、例項建構函式
說明:1.例項建構函式用於建立和初始化例項。建立新物件時將呼叫類建構函式
class coords}
注意:
為了清楚起見,此類包含公共資料成員。建議不要使用這種程式設計方法,因為它使程式中任何位置的任何方法都可以不受限制、不經驗證地訪問物件的內部元件。資料成員通常應當為私有的,並且只應當通過類方法和屬性來訪問。
2.無論何時建立基於 coords 類的物件,都會呼叫此建構函式。諸如此類不帶引數的建構函式稱為「預設建構函式」。然而,提供其他建構函式通常十分有用。例如,可以向 coords 類新增建構函式,以便可以為資料成員指定初始值:
a.帶引數的
//a constructor with two arguments:
public coords(int x, int y)
b.不帶引數的
//default constructor:
public coords()
c.可以用例項建構函式來呼叫基類的例項建構函式。類建構函式可通過初始值設定項來呼叫基類的建構函式
class circle : shape}
注意:
如果類沒有預設建構函式,將自動生成乙個建構函式,並且將用預設值來初始化物件字段,例如,int 被初始化為 0
例子:下面的示例說明包含兩個類建構函式的類:乙個類建構函式沒有引數,另乙個類建構函式帶有兩個引數。
class coords//a constructor with two arguments:
public coords(int x, int y)
//override the tostring method:
public
override
string tostring()
,)", x, y));}}
class mainclass
", p1);
system.console.writeline("
coords #2 at
", p2);
}}
輸出:
coords #1 at (0,0)coords #2 at (5,3)
使用建構函式
建構函式是在建立給定型別的物件時執行的類方法。建構函式具有與類相同的名稱,它通常初始化新物件的資料成員。在下面的示例中,定義了乙個具有乙個簡單的建構函式,名為 taxi 的類。然後使用 new 運算子來例項化該類。在為新物件分配記憶體之後,new 運算子立即呼叫 taxi 建構函式。
不帶引數的建構函式稱為「預設建構函式」。無論何時,只要使用 new 運算子例項化物件,並且不為 new 提供任何引數,就會呼叫預設建構函式。有關更多資訊,請參見例項建構函式。
除非類是 static 的,否則 c# 編譯器將為無建構函式的類提供乙個公共的預設建構函式,以便該類可以例項化
C 建構函式之預設建構函式
參考部落格 以下內容是在上述博主的部落格中提煉出來的 一 預設建構函式的含義是啥 主要就是 預設建構函式在呼叫的時候不需要顯示傳入實參的建構函式 二 預設的建構函式的分類 1 無參建構函式 就是沒有引數的建構函式 class sample 2 帶有形參,並且帶有預設值的建構函式 class samp...
C 建構函式之委託建構函式
委託建構函式 c 11新標準擴充套件了建構函式初始值的功能,使得我們可以定義所謂的委託建構函式。乙個委託建構函式使用它所屬類的其他建構函式執行它自己的初始化過程,或者說它把它自己的一些 或者全部 職責委託給了其他建構函式。和其他建構函式一樣,乙個委託建構函式也有乙個成員初始值的列表和乙個函式體。在委...
msdn之斷言篇
crtdbg.h 標頭檔案為斷言檢查定義 assert 巨集和 asserte 巨集。巨集 結果 assert 如果指定的表示式計算為 false,則為 assert的檔名和行號。asserte 與 assert相同,並加上所斷言的表示式的字串表示形式。asserte功能更強,因為它還報告結果為 f...