代码之家  ›  专栏  ›  技术社区  ›  Giffyguy

如何在C中声明不可写数组?

  •  3
  • Giffyguy  · 技术社区  · 15 年前

    目前,我的代码类似于:

    private static readonly int[] INTARRAY = {1, 2, 3};
    

    这使我无法分配给 INTARRAY 一个新的例子 int[] 在静态构造函数之外,但它仍然允许我将 int 元素。
    例如:

    INTARRAY[1] = 5;
    

    如何使此数组完全只读?这是一个值类型数组,在声明中使用数组初始值设定项进行赋值。如何使这些初始值无限期地保持不变?

    3 回复  |  直到 15 年前
        1
  •  9
  •   Joe White    15 年前

    如果它是一个数组,你不能。但是如果你愿意 IList<int> ,您可以:

    private static readonly IList<int> INTARRAY = new List<int> {1, 2, 3}.AsReadOnly();
    
        2
  •  1
  •   Ali Tarhini    15 年前

    不幸的是,没有为数组提供此功能的内置c#构造。最好的解决方案是,如果列表符合您的业务需求,则改用它

        3
  •  1
  •   steinar Justin CI    15 年前

    如果您已经完全准备好使用数组,那么可以用只读的方式在数组周围编写一个简单的包装类 indexer 访问元素。

    推荐文章