2012-04-18 35 views
9

是否有任何已建立的方式返回C#中的只讀2-d數組?C#中只讀二維數組#

我知道ReadOnlyCollection是一個一維數組的使用,我很樂意編寫自己的包裝類,它實現this[] {get}。但是如果這個車輪已經存在,我不想重新發明車輪。

+2

沒有什麼內置的多維數組afaik – BrokenGlass 2012-04-18 21:14:08

+0

這裏是一些類似StackOverflow問題的答案 - http://stackoverflow.com/questions/678379/is-there-a-read-only-generic-dictionary-available在網 – 2012-04-18 21:14:37

+0

這不是很相似,@蠍子王子。 – 2012-04-18 21:15:22

回答

1

只有一種方法可以模擬這種情況。

您需要使用私有數組創建自己的類。

最類似的實現的陣列的是索引:

'10 0.8' 鏈接示出了二維陣列的仿真。

如果僅使用getter實現索引器,則用戶只能讀取元素,而不能寫入元素。但是,如果每個元素都是一個對象(引用類型),則不能阻止修改訪問的對象屬性。

但是,也有模擬「只讀」的對象的幾種方法:

  • 創建暴露所述陣列中的每個元素的屬性如只讀屬性的封裝類,使得它們不能被修改
  • 使用原始值類型(如int
  • 由私營陣列代替私人陣列中的原始元素中返回元素的副本擊敗的變化,使向對象所做的更改不會影響數組中的原始對象。

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

3

不幸的是,沒有任何內置的實現來處理您要求的案例。 但你自己的一個簡單的實現,不應該是困難的。

唯一想的,我希望你意識到這一點,你需要做的是隻讀收集,但該集合內不元素。

希望這會有所幫助。