2011-01-19 18 views
3

私が持っている場合は、このようなタイプ:静的フィールド/プロパティの初期化

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

    public static int MinValue = Int32.MinValue; 
} 
でしょうが、ちょうど静的コンストラクタの実行のように一度だけ初期化され MinValue

?または、私はMinValueを静的コンストラクタ内で初期化する必要がありますか?

これはclassesのために何が違うのでしょうか?

答えて

3

正確に1回実行されますが、かなりのではなく、静的コンストラクタであるかのように実行されます。型初期化子の実行時の規則はdifferent when a type has a static constructorです。観察された振る舞いchanged a bit in .NET 4.0も注意してください。通常、あなたはそれについて心配する必要はありません。

私が知っている限り、クラスと構造体の間の型の初期化に違いはありません。

MinValueフィールドは公開されており、は書き込み可能であることに注意してください。それは悪い考えのようです。

+0

ありがとうございましたJon、自分の投稿を自分自身で長い間見たことがありません。私は実際に.NET 4.0に対してコンパイルします。あなたは正しいです、MinValueを書き込み可能にすることは意図的ではありませんでした。 –

4

はい、静的コンストラクタの実行前に、正確に1回初期化されます。参照型(クラス)と同じです。

4

はい、プロセス(アプリドメイン)ごとに1回だけ初期化されます。