考虑以下程序:
class Program
{
static void Main(string[] args)
{
Console.WriteLine(vocabulary[0]);
}
private static readonly string greeting = "Hello";
private static readonly string[] vocabulary =
{
greeting
};
}
程序按预期输出Hello
。现在让我们重新排列行:
class Program
{
static void Main(string[] args)
{
Console.WriteLine(vocabulary[0]);
}
private static readonly string[] vocabulary =
{
greeting
};
private static readonly string greeting = "Hello";
}
现在程序输出已更改为空字符串。
似乎数组初始化程序列表未能说明greeting
的初始化,而是使用默认值string(空字符串)代替。我给人的印象是,在C#中声明静态变量的顺序是不相关的(在类范围内)。这种特殊行为背后的原因是什么?