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

如何在C中声明常量对象的可写数组?

  •  1
  • Giffyguy  · 技术社区  · 13 年前

    我需要能够在数组中设置对象,但我不希望能够更改任何单个对象的状态。

    3 回复  |  直到 13 年前
        1
  •  3
  •   Jon Skeet    13 年前

    string

    ReadOnlyCollection<T> 包装另一个集合 只有 包装器知道)。我知道这对你来说不是问题,但我只是想指出。如果使变量引用数组 readonly ,这只会阻止其他代码将变量的值设置为对另一个数组的引用-它不会阻止数组本身的更改。

        2
  •  0
  •   ace    13 年前

    好吧,您可以声明一个私有变量,然后声明一个属性,引用只定义了getter的变量,这类属性使它成为只读的。

    例子:

    private int[] myArray =new int[5];
    public int[] MyArray
    {
      get { return MyArray; }
    }
    
        3
  •  0
  •   Dave Walker    13 年前

    我将研究使用某种形式的不变集合作为更好的设计概念。

    选项包括返回为IEnumerable、使用yield[1]的IEnumerable、readOnlyCollection…请参阅下面的链接以获得更好的解释。

    〔1〕

    public IEnumerable<string> Hosts 
          { 
                get     
                 {     
                     foreach (var host in _hosts)
                     {    
                         yield return host;
                     }    
                 }
         }
    

    http://geekswithblogs.net/BlackRabbitCoder/archive/2010/11/04/c.net-fundamentals-returning-an-immutable-collection.aspx

    推荐文章