C# 中的靜態變數初始化
在 C# 中使用靜態變數時,了解其初始化的時間至關重要。
靜態變數的時序初始化
靜態變數在下列情況下初始化:
-
存在靜態建構子:如果類別有靜態建構子(static MyStaticConstructor()),靜態變數在第一次呼叫靜態建構子時初始化。
-
否靜態建構子: 如果沒有靜態建構函數,靜態變數會在型別載入記憶體時初始化。
類型載入觸發器
Class載入由下列條件觸發:
- 建立clas s
- 訪問類的靜態成員
- 使用反射顯式加載的類
其他注意事項
- 在.NET 4 中,靜態變數初始化變得更加“惰性”,這意味著它們僅在首次初始化時才進行初始化
- 如果設定了beforefieldinit 標誌,靜態變數會在呼叫任何實例構造函數之前初始化。此標誌是透過靜態建構函數的存在來設定的。
- 為了確保行為一致,建議避免依賴特定的初始化計時,而只需透過常規程式碼存取來初始化靜態變數。
有關更多詳細資訊和全面的解釋,請參閱原始回覆中連結的 Jon Skeet 的文章。
以上是C#中靜態變數什麼時候初始化?的詳細內容。更多資訊請關注PHP中文網其他相關文章!