首页 > 技术文章 > C#里面如何创建只读集合

zhang-rui 2020-05-20 11:28 原文

转载:https://www.cnblogs.com/abatei/archive/2008/02/04/1064102.html

 

在真正的项目实践中,有时为了数据安全,我们经常要对集合做一些限制,如只能对集合里面的内容进行读取,但不能修改,

这时我们可有使用ReadOnlyCollection<T>来对集合做一些限制,例如:

 

public class Lottery
{

  List<int> _numbers = null;


  public Lottery()
  {
    _numbers = new List<int>(5);

    _numbers.Add(10);
    _numbers.Add(21);
    _numbers.Add(32);
    _numbers.Add(46);
    _numbers.Add(51);

  }


  public ReadOnlyCollection<int> Results
  {
    get
    {
      return new ReadOnlyCollection<int>(_numbers);
    }
  }

}

 

static void Main(string[] args)
{

  Lottery ttery = new Lottery();

  foreach (int list in ttery.Results)
  {
    Console.WriteLine(list);
  }

  ttery.Results[0] = 1;//这行代码在编译器里面会提示错误,因为Results是只读的

}

 

当然,上述我们讲的都是list,那ReadOnlyCollection<int>也同样适用于数组,如下:

int [] items = new int[3];
items[0]=0;
items[1]=1;
items[2]=2;

new ReadOnlyCollection<int>(items);

 

注:在使用时,需要添加using System.Collections.ObjectModel 这个引用。

 

推荐阅读