2011-01-19 97 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

是的,它仅在每个进程(应用程序域)中被初始化一次。