C# 中靜態類別初始化的確定順序
C# 中靜態類別初始化的順序由 ECMA 規範闡明。此順序確保程序行為的一致性。
根據 ECMA-334:
- 當靜態欄位初始值設定項存在時,它會立即在對應的靜態建構子之前執行。
- 如果沒有靜態建構函數,則初始化程序將在使用任何靜態欄位之前在依賴實現的時間執行類別。
- 當建立類別的實例或引用任何靜態成員時,會觸發靜態建構子的執行。
- 在具有 Main 方法的類別中,靜態建構子在進入 Main 方法之前執行。主要方法。
在給定的程式碼範例中:
- 在中引用 A.X Main 觸發 A.X 的初始化。
- A.X 初始化需要 B.X,因此它啟動 B.X 初始化。
- B.X 被指派預設值 7。輸出:「B.X = 7.」
- 呼叫靜態 B(),輸出「B.X = 0."
- A.X 初始化為 B.X 1,導致 A.X = 1。
- 呼叫靜態A(),輸出「A.X = 1。」
- 最後,主要列印「A = 1,B = 0。」
標準不鼓勵觀察具有預設狀態的變數初始值設定項的靜態欄位以保持一致性。
以上是C# 如何保證靜態類別初始化的確定性順序?的詳細內容。更多資訊請關注PHP中文網其他相關文章!