首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> C語言 >> 關於C語言

C# 銳利體驗 (五) (3):靜態建構函式執行時機與規則

     編輯:關於C語言

類別建構函式補充

建構函式無回傳值。靜態建構函式初始化類別靜態變數。不同於實例建構函式,靜態建構函式在繼承中不隱含呼叫,不可由使用者直接呼叫。掌握靜態建構函式關鍵在掌握其執行時間。執行時間不確定(編譯器未明確定義),但有四大準則:

  1. 程式執行過程中,靜態建構函式最多只執行一次。
  2. 在類別靜態成員初始化之後執行(編譯器將靜態成員初始化陳述式轉換為賦值陳述式置於靜態建構函式最開始)。
  3. 在任何類別靜態成員被參考之前執行。
  4. 在任何類別實例變數被配置之前執行。

範例:靜態建構函式執行順序

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();
    }
}

可能輸出 1

MyClass1 Static Constructor
MyClass1.Method1
MyClass2 Static Constructor
MyClass2.Method1

可能輸出 2

MyClass1 Static Constructor
MyClass2 Static Constructor
MyClass1.Method1
MyClass2.Method1

實例建構函式可參考實例與靜態變數;靜態建構函式僅能參考靜態變數。若深刻掌握「建構函式唯一目的為確保類別成員變數正確初始化」,對各種建構函式自有會心理解——沒理由不這樣!

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved