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

时间:2010-11-23 22:59:30

标签: c# .net arrays persistence readonly

目前,我的代码类似于:

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

这可以防止我将INTARRAY分配给静态构造函数之外的int[]的新实例,但它仍然允许我分配给各个int元素。
例如:

INTARRAY[1] = 5;

如何将此数组完全设为只读?这是一个值类型数组,并在声明中分配了一个数组初始值设定项。如何使这些初始值无限期地持续存在?

3 个答案:

答案 0 :(得分:9)

如果是阵列,你就不能。但如果你愿意成为IList<int>,你可以这样做:

private static readonly IList<int> INTARRAY = new List<int> {1, 2, 3}.AsReadOnly();

答案 1 :(得分:1)

遗憾的是,没有为数组提供此功能的内置c#构造。如果符合您的业务需求,最佳解决方案是使用List

答案 2 :(得分:1)

如果您完全使用数组,可以在数组周围编写一个简单的包装类,只读indexer访问元素。