目前,我的代码类似于:
private static readonly int[] INTARRAY = {1, 2, 3};
这可以防止我将INTARRAY
分配给静态构造函数之外的int[]
的新实例,但它仍然允许我分配给各个int
元素。
例如:
INTARRAY[1] = 5;
如何将此数组完全设为只读?这是一个值类型数组,并在声明中分配了一个数组初始值设定项。如何使这些初始值无限期地持续存在?
答案 0 :(得分:9)
如果是阵列,你就不能。但如果你愿意成为IList<int>
,你可以这样做:
private static readonly IList<int> INTARRAY = new List<int> {1, 2, 3}.AsReadOnly();
答案 1 :(得分:1)
遗憾的是,没有为数组提供此功能的内置c#构造。如果符合您的业务需求,最佳解决方案是使用List
答案 2 :(得分:1)
如果您完全使用数组,可以在数组周围编写一个简单的包装类,只读indexer访问元素。