在C#中只读二维数组

在C#中是否有任何已建立的返回只读二维数组的方法?

我知道ReadOnlyCollection是用于1-d数组的正确选择,我很乐意编写自己的包装类来实现this[] {get} 。 但是如果这个轮子已经存在,我不想重新发明轮子。

只有一种方法来模拟这个。

您需要使用私有数组创建自己的类。

数组最相似的实现是索引器:

  • 使用索引器
  • 索引器(C#编程指南)
  • 10.8索引器(旧)
  • C#6.0草案索引器

’10 .8’链接显示了二维数组的模拟。

如果仅使用getter实现索引器,则用户只能读取元素,但不能写入元素。 但是,如果每个元素都是一个对象(引用类型),则无法阻止修改所访问的对象属性。

但是,有几种方法可以模拟“只读”对象:

  • 创建一个包装类,它将数组中每个元素的属性公开为只读属性,以便不能修改它们
  • 使用原始值类型(如int
  • 通过返回私有数组中元素的副本而不是私有数组中的原始元素来击败更改,这样,对对象所做的更改不会影响数组中的原始对象。

在其他语言(如C ++)中,有引用和指向常量值的指针,但这在C#中不存在。

不幸的是,没有任何内置的实现来处理你要求的案例。 但是,一个简单的实现,不应该是困难的。

唯一的想法,我希望你知道,你会做的是一个只读集合 ,但不是该集合中的元素。

希望这可以帮助。