创建全局数组常量的正确方法是什么?

时间:2014-12-12 05:42:59

标签: c# arrays global-variables constants

我已经做了一些搜索,但还没找到。目前我正在使用:

class GlobalArrays
{
    public static string[] words = { "Easy", "Medium", "Hard" };
    public static Color[] backColors = { Color.LightGreen, Color.Orange, Color.Red };
}

哪种方法效果很好,但我不知道这是否是正确的方法。我看到全局变量是这样做的:

static class GlobalVars
{
    const string SOMETHING = "LOL";
}

这应该是Microsoft批准的声明命名空间级别常量的方法,但是当我尝试使用数组时,它会抛出一个错误,说它们只能是string类型。

static class GlobalArrays
{
    public const string[] words = { "Easy", "Medium", "Hard" };
    public const Color[] backColors = { Color.LightGreen, Color.Orange, Color.Red };
}

上面的代码不会编译,并说它们只能用null初始化,因为它们的类型不是string

1 个答案:

答案 0 :(得分:3)

根据编译器:

  

除string之外的引用类型的const字段只能用null初始化。

我认为这与你接近的情况差不多:

private static readonly string[] words = { "Easy", "Medium", "Hard" };
public static IReadOnlyCollection<string> Words
{
    get
    {
        return Array.AsReadOnly(words);
    }
}