建構函式無回傳值。靜態建構函式初始化類別靜態變數。不同於實例建構函式,靜態建構函式在繼承中不隱含呼叫,不可由使用者直接呼叫。掌握靜態建構函式關鍵在掌握其執行時間。執行時間不確定(編譯器未明確定義),但有四大準則:
using System;
class MyClass1
{
static MyClass1() { Console.WriteLine("MyClass1 Static Constructor"); }
public static void Method1() { Console.WriteLine("MyClass1.Method1"); }
}
class MyClass2
{
static MyClass2() { Console.WriteLine("MyClass2 Static Constructor"); }
public static void Method1() { Console.WriteLine("MyClass2.Method1"); }
}
class Test
{
static void Main()
{
MyClass1.Method1();
MyClass2.Method1();
}
}
MyClass1 Static Constructor
MyClass1.Method1
MyClass2 Static Constructor
MyClass2.Method1
MyClass1 Static Constructor
MyClass2 Static Constructor
MyClass1.Method1
MyClass2.Method1
實例建構函式可參考實例與靜態變數;靜態建構函式僅能參考靜態變數。若深刻掌握「建構函式唯一目的為確保類別成員變數正確初始化」,對各種建構函式自有會心理解——沒理由不這樣!