靜態構造函數用於初始化任何靜態數據,或用於執行僅需執行一次的特定操作。在創建第一個實例或引用任何靜態成員之前,將自動調用靜態構造函數。
C# 複製代碼
1
2
3
4
5
6
7
8
|
class SimpleClass { // Static constructor static SimpleClass() { //... } } |
靜態構造函數具有以下特點:
靜態構造函數既沒有訪問修飾符,也沒有參數。
在創建第一個實例或引用任何靜態成員之前,將自動調用靜態構造函數來初始化類。
無法直接調用靜態構造函數。
在程序中,用戶無法控制何時執行靜態構造函數。
靜態構造函數的典型用途是:當類使用日誌文件時,將使用這種構造函數向日志文件中寫入項。
靜態構造函數在爲非託管代碼創建包裝類時也很有用,此時該構造函數可以調用 LoadLibrary 方法。
示例
在此示例中,類 Bus 有一個靜態構造函數和一個靜態成員 Drive()。當調用 Drive() 時,將調用靜態構造函數來初始化類。
C# 複製代碼
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
|
public class Bus { // Static constructor: static Bus() { System.Console.WriteLine( "The static constructor invoked." ); } public static void Drive() { System.Console.WriteLine( "The Drive method invoked." ); } } class TestBus { static void Main() { Bus.Drive(); } } |
輸出
The static constructor invoked.
The Drive method invoked.