影响数组初始化程序列表行为的代码顺序

时间:2019-02-27 18:04:25

标签: c# .net

考虑以下程序:

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#中声明静态变量的顺序是不相关的(在类范围内)。这种特殊行为背后的原因是什么?

0 个答案:

没有答案