一尘不染

静态类中静态字段的初始化顺序

c#

给出以下代码:

public static class Helpers
{
   private static Char[] myChars = new Char[] {'a', 'b'};

   private static Int32 myCharsSize = myChars.Length;
}

是否可以保证 使用其长度分配给它 之前myChars将其初始化? __myCharsSize


阅读 291

收藏
2020-05-19

共1个答案

一尘不染

是的,他们会的,请参见10.4.5.1静态字段初始化

类的静态字段变量初始值设定项对应于按其在类声明中出现的文本顺序执行的分配序列。
如果类中存在静态构造函数(第10.11节),则在执行该静态构造函数之前立即执行静态字段初始化程序。否则,将在首次使用该类的静态字段之前,在与实现相关的时间执行静态字段初始化程序。

话虽这么说,我认为最好在静态类型初始化程序(静态构造函数)中进行初始化。

2020-05-19