静态字段/属性初始化

时间:2011-01-19 22:01:22

标签: c# .net performance initialization

如果我有这样的类型:

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

    public static int MinValue = Int32.MinValue;
}

MinValue只会初始化ONCE,就像执行静态构造函数一样?或者我应该在静态构造函数中初始化MinValue吗?

classes

会有什么不同吗?

3 个答案:

答案 0 :(得分:4)

是的,它会在静态构造函数执行之前初始化一次。参考类型(类)相同。

答案 1 :(得分:4)

是的,每个进程(应用程序域)只会初始化一次。

答案 2 :(得分:3)

它将被执行一次,但不会完全,就好像它是在静态构造函数中一样。有关何时执行类型初始值设定项的规则是different when a type has a static constructor。请注意观察到的行为changed a bit in .NET 4.0。通常你不需要担心这一点。

据我所知,类和结构之间的类型初始化没有区别。

请注意,您的MinValue字段是公开的,可写 - 这是不是意味着?这似乎是一个坏主意。