哦,那很复杂。这取决于是否设置了beforefieldinit标志,而这又(在C#中)取决于是否存在静态构造函数。更糟糕的是,在.NET 4中,我相信行为已经改变,使它比以前更“懒惰”。 坦白地说,在这里我不会编写任何特定的行为代码;只要使用常规代码访问它们,静态字段将在您尝试使用它们之前初始化。 Jon Skeet在这里有一个很好的解释。