如果我有一类这样的:静态字段/属性初始化
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