我很好奇 C# 规范对 C# 5 (.net4) 中静态字段的初始化顺序有何说明。例如:
public class Test
{
public static readonly string A = "hi";
public static readonly string B = "bye";
public static readonly string DEFAULT = A;
}
在测试(Mono 2.x)中,它们似乎按照它们在代码中出现的顺序进行初始化。例如。按原样,DEFAULT
将具有值“hi”,但如果我移动定义DEFAULT
在A和B之上,它将被分配NULL
因为A还没有被分配。
是否能保证变量按顺序初始化?还是由编译器决定?
Thanks.
它是按照它们出现的顺序排列的。参见here http://msdn.microsoft.com/en-us/library/aa645758(v=vs.71).aspx.
类的静态字段变量初始值设定项对应于
按文本顺序执行的赋值序列
它们出现在类声明中。
另外,当你有一个静态构造函数时:
如果类中存在静态构造函数(第 10.11 节),
静态字段初始值设定项的执行立即发生在
执行该静态构造函数。否则,静态字段
初始化程序在依赖于实现的时间之前执行
第一次使用该类的静态字段。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)