【问题标题】:What's the proper way to create a global array constant?创建全局数组常量的正确方法是什么?
【发布时间】:2014-12-12 05:42:58
【问题描述】:

我进行了一些搜索,但没有找到太多。目前我正在使用:

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";
}

这应该是微软认可的声明命名空间级常量的方式,但是当我尝试使用数组时,它抛出了一个错误,说它们只能是 string 类型。

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

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

【问题讨论】:

  • 能贴出抛出错误的代码吗?
  • @DavidPilkington 当然

标签: c# arrays global-variables constants


【解决方案1】:

根据编译器:

字符串以外的引用类型的const字段只能用null初始化。

我认为这与您将得到的差不多:

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

【讨论】:

  • 请注意,数组元素的值仍然可以通过任何可以访问它的方法单独更改。
  • @shree.pat18 这就是我将它隐藏在 ReadOnlyCollection 后面的原因。
猜你喜欢
  • 2019-05-04
  • 1970-01-01
  • 1970-01-01
  • 2020-02-16
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多