from p102
建構函式也可以宣告為static。例項建構函式初始化類的每個新例項,而static建構函式初始化類級別的項。通常,靜態建構函式初始化類的靜態字段。
□在引用任何靜態成員之前
□在建立類的任何例項之前
--靜態建構函式在以下方面與例項建構函式類似
□靜態建構函式的名稱必須和類名相同
□建構函式不能返回值
--靜態建構函式在以下方面和例項建構函式不同
□靜態建構函式宣告中使用static關鍵字
□類只能有乙個靜態建構函式,且不能帶引數
□靜態建構函式不能有訪問修飾符
以下即為乙個靜態建構函式的示例。其形式和例項建構函式相同,只是增加了static關鍵字。
1using
system;
2using
system.collections.generic;
3using
system.linq;
4using
system.text;
5using
system.threading.tasks;67
namespace
review817
}18class
class2
1926}27
class
program
2837
}38 }
輸出為:
通過這個例子,我們可以了解到:
1、之前所了解到的,在自己未寫建構函式時,編譯器會自動加上乙個無參的預設建構函式。對於這一點,靜態建構函式不包含在內,即就算自己寫了靜態建構函式,但如果沒寫其他建構函式,那麼編譯器仍然會自動加上乙個無參的預設建構函式。
2、靜態字段如果沒有賦初值,也會像類字段一樣,用空值作為預設值。(對於這裡的int就是用0作為預設值)
關於靜態建構函式,一些其他需要注意的有:
--類既可以有靜態建構函式也可以有例項建構函式
--如同靜態方法,靜態建構函式不能訪問所在類的例項成員,因此也不能使用this訪問器
--不能從程式中顯示呼叫靜態建構函式,系統會自動呼叫它們,在:
□類的任何例項被建立之前
□類的任何靜態成員被引用之前
靜態建構函式
1 靜態建構函式既沒有訪問修飾符,也沒有引數。因為是.net呼叫的,所以像public和private等修飾符就沒有意義了。2 是在建立第乙個類例項或任何靜態成員被引用時,net將自動呼叫靜態建構函式來初始化類,也就是說我們無法直接呼叫靜態建構函式,也就無法控制什麼時候執行靜態建構函式了。3 乙個類...
靜態建構函式
1.類的建構函式有三種 例項建構函式,私有建構函式和靜態建構函式,靜態建構函式只能初始化靜態資料,或執行一次特殊的操作,這種函式只執行一次,在第一次建立類的物件的時候或者呼叫靜態成員時就會自動呼叫它,靜態建構函式沒有訪問修飾符,也沒有任何引數。可以參考一下下面的 using system using...
靜態建構函式
1 如果乙個類沒有定義靜態建構函式,就算它有靜態字段,編譯器也不會自動給這個類生成乙個預設的靜態建構函式。驗證如下 using system using system.collections.generic using system.text namespace teststaticconstruc...