我想了解一下C#规范是否对C# 5(.net4)中静态字段的初始化顺序有任何规定。例如:
在测试中(Mono 2.x),它们似乎按照它们在代码中出现的顺序进行初始化。例如,如上所示,
变量按顺序初始化有保证吗?还是由编译器决定?
谢谢。
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还没有被赋值。变量按顺序初始化有保证吗?还是由编译器决定?
谢谢。