在 C# 中只读二维数组
本文关键字:二维数组 只读 | 更新日期: 2023-09-27 18:31:46
是否有任何既定的方法可以在 C# 中返回只读二维数组?
我知道ReadOnlyCollection
用于一维数组是正确的,并且很高兴编写我自己的包装类来实现this[] {get}
。但是,如果这个轮子已经存在,我不想重新发明轮子。
不幸的是,
没有任何内置的实现来处理您要求的情况。但是,自己实现一个简单的实现应该不是什么困难的事情。
我希望你知道的唯一想法是只读集合,而不是该集合中的元素。
希望这有帮助。
只有一种方法可以模拟这一点。
您需要使用私有数组创建自己的类。
数组最相似的实现是索引器:
- 使用索引器
- 索引器(C# 编程指南)
- 10.8 索引器(旧)
- C# 6.0 草稿索引器
"10.8"链接显示了二维阵列的模拟。
如果仅使用 getter 实现索引器,则用户只能读取元素,而不能写入元素。但是,如果每个元素都是一个对象(引用类型),则无法阻止对访问的对象属性的修改。
但是,有几种方法可以模拟"只读"对象:
- 创建一个包装类,该类将数组中每个元素的属性公开为只读属性,以便无法修改它们
- 使用基元值类型(如
int
) - 通过返回私有数组中元素的副本而不是私有数组中的原始元素来破坏更改,这样对对象所做的更改不会影响数组中的原始对象。
在其他语言(如C++)中,有指向常量值的引用和指针,但这在 C# 中不存在。