如果我有一類這樣的:靜態字段/屬性初始化
public struct Effect
{
public int Value { get; set; }
public static int MinValue = Int32.MinValue;
}
將MinValue
只進行一次初始化,就像一個靜態構造函數的執行?或者我應該在靜態構造函數中初始化MinValue
?
對classes
會這樣嗎?
如果我有一類這樣的:靜態字段/屬性初始化
public struct Effect
{
public int Value { get; set; }
public static int MinValue = Int32.MinValue;
}
將MinValue
只進行一次初始化,就像一個靜態構造函數的執行?或者我應該在靜態構造函數中初始化MinValue
?
對classes
會這樣嗎?
它將被執行一次,但不是相當於就好像它在靜態構造函數中一樣。關於什麼時候執行類型初始值設定項的規則是different when a type has a static constructor。請注意,觀察到的行爲也是changed a bit in .NET 4.0。通常你不需要擔心。
據我所知,類和結構之間的類型初始化沒有區別。
請注意,您的MinValue
字段是公開的,並且可寫 - 是否意味着?這似乎是一個壞主意。
是的,它會在靜態構造函數執行之前初始化一次。參考類型(類)相同。
是的,它僅在每個進程(應用程序域)中被初始化一次。
感謝Jon,很久沒有見過你的帖子了。我實際上是針對.NET 4.0編譯的。你是對的,MinValue不是可寫的。 – 2011-01-19 22:24:53