首頁 > 後端開發 > C++ > C# 如何保證靜態類別初始化的確定性順序?

C# 如何保證靜態類別初始化的確定性順序?

Mary-Kate Olsen
發布: 2025-01-03 17:19:42
原創
661 人瀏覽過

How Does C# Guarantee a Deterministic Order for Static Class Initialization?

C# 中靜態類別初始化的確定順序

C# 中靜態類別初始化的順序由 ECMA 規範闡明。此順序確保程序行為的一致性。

根據 ECMA-334:

  • 當靜態欄位初始值設定項存在時,它會立即在對應的靜態建構子之前執行。
  • 如果沒有靜態建構​​函數,則初始化程序將在使用任何靜態欄位之前在依賴實現的時間執行類別。
  • 當建立類別的實例或引用任何靜態成員時,會觸發靜態建構子的執行。
  • 在具有 Main 方法的類別中,靜態建構子在進入 Main 方法之前執行。主要方法。

在給定的程式碼範例中:

  1. 在中引用 A.X Main 觸發 A.X 的初始化。
  2. A.X 初始化需要 B.X,因此它啟動 B.X 初始化。
  3. B.X 被指派預設值 7。輸出:「B.X = 7.」
  4. 呼叫靜態 B(),輸出「B.X = 0."
  5. A.X 初始化為 B.X 1,導致 A.X = 1。
  6. 呼叫靜態A(),輸出「A.X = 1。」
  7. 最後,主要列印「A = 1,B = 0。」

標準不鼓勵觀察具有預設狀態的變數初始值設定項的靜態欄位以保持一致性。

以上是C# 如何保證靜態類別初始化的確定性順序?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
作者最新文章
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板