2011-01-19 145 views
3

如果我有一類這樣的:靜態字段/屬性初始化

public struct Effect 
{ 
    public int Value { get; set; } 

    public static int MinValue = Int32.MinValue; 
} 

MinValue只進行一次初始化,就像一個靜態構造函數的執行?或者我應該在靜態構造函數中初始化MinValue

classes會這樣嗎?

回答

3

它將被執行一次,但不是相當於就好像它在靜態構造函數中一樣。關於什麼時候執行類型初始值設定項的規則是different when a type has a static constructor。請注意,觀察到的行爲也是changed a bit in .NET 4.0。通常你不需要擔心。

據我所知,類和結構之間的類型初始化沒有區別。

請注意,您的MinValue字段是公開的,並且可寫 - 是否意味着?這似乎是一個壞主意。

+0

感謝Jon,很久沒有見過你的帖子了。我實際上是針對.NET 4.0編譯的。你是對的,MinValue不是可寫的。 – 2011-01-19 22:24:53

4

是的,它會在靜態構造函數執行之前初始化一次。參考類型(類)相同。

4

是的,它僅在每個進程(應用程序域)中被初始化一次。