C#中只读二维数组#

是否有任何已建立的方式返回C#中的只读2-d数组?C#中只读二维数组#

我知道ReadOnlyCollection是一个一维数组的使用,我很乐意编写自己的包装类,它实现this[] {get}。但是如果这个车轮已经存在,我不想重新发明车轮。

回答:

只有一种方法可以模拟这种情况。

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

最类似的实现的阵列的是索引:

  • Using indexers
  • Indexers (C# programming guide)
  • 10.8 Indexers

'10 0.8' 链接示出了二维阵列的仿真。

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

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

  • 创建暴露所述阵列中的每个元素的属性如只读属性的封装类,使得它们不能被修改
  • 使用原始值类型(如int
  • 由私营阵列代替私人阵列中的原始元素中返回元素的副本击败的变化,使向对象所做的更改不会影响数组中的原始对象。

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

回答:

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

唯一想的,我希望你意识到这一点,你需要做的是只读收集,但该集合内不元素。

希望这会有所帮助。

以上是 C#中只读二维数组# 的全部内容, 来源链接: utcz.com/qa/261251.html

回到顶部