review C (1)靜態建構函式

2022-08-14 07:18:13 字數 1304 閱讀 1467

from p102

建構函式也可以宣告為static。例項建構函式初始化類的每個新例項,而static建構函式初始化類級別的項。通常,靜態建構函式初始化類的靜態字段。

□在引用任何靜態成員之前

□在建立類的任何例項之前

--靜態建構函式在以下方面與例項建構函式類似

□靜態建構函式的名稱必須和類名相同

□建構函式不能返回值

--靜態建構函式在以下方面和例項建構函式不同

□靜態建構函式宣告中使用static關鍵字

□類只能有乙個靜態建構函式,且不能帶引數

□靜態建構函式不能有訪問修飾符

以下即為乙個靜態建構函式的示例。其形式和例項建構函式相同,只是增加了static關鍵字。

1

using

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...