C#里面如何创建只读集合
转载: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 这个引用。