Ale*_*lex 44 c# static-initializer
给出以下代码:
public static class Helpers
{
private static Char[] myChars = new Char[] {'a', 'b'};
private static Int32 myCharsSize = myChars.Length;
}
Run Code Online (Sandbox Code Playgroud)
是否保证在我使用其长度分配之前myChars将其初始化?myCharsSize
And*_*are 53
是的,他们会,请参见10.4.5.1静态字段初始化:
类的静态字段变量初始值设定项对应于以它们出现在类声明中的文本顺序执行的赋值序列.如果类中存在静态构造函数(第10.11节),则在执行该静态构造函数之前立即执行静态字段初始值设定项.否则,静态字段初始化器在第一次使用该类的静态字段之前的实现相关时间执行.
话虽如此,我认为在静态类型初始化器(静态构造函数)中进行初始化会更好.