给出以下代码:
public static class Helpers
{
private static Char[] myChars = new Char[] {'a', 'b'};
private static Int32 myCharsSize = myChars.Length;
}
是否可以保证{<1}}在之前
答案 0 :(得分:49)
是的,他们会,请参阅10.4.5.1 Static field initialization:
静态字段变量初始值设定项 一个类对应于一个序列 在。中执行的作业 它们出现的文本顺序 类声明。 如果是静态的 构造函数(第10.11节)存在于 类,执行静态 字段初始化程序立即发生 在执行该静态之前 构造函数。否则,静止 字段初始值设定项在a处执行 依赖于实现的时间 第一次使用静态场 那个班。
话虽如此,我认为在静态类型初始化器(静态构造函数)中进行初始化会更好。
答案 1 :(得分:13)
编辑:我接受(见better answer above)它会起作用;但我对代码的想法是让它尽可能简单明了。如果显而易见它会起作用(如果你不得不问,那就不行了),那就不要那样写了......
特别是依赖字段顺序的问题:
partial
类我的建议仍然是:在这种情况下使用静态构造函数。
答案 2 :(得分:0)
乍一看,我不确定,我不得不试一试,看看它是否已编译。
鉴于此,我将在静态构造函数中初始化该值。