2013-09-10 81 views
1

我有一個數組變量。我可以使用Rank屬性來獲取維數,並且我知道您可以使用foreach訪問每個元素,就好像數組已經變平。但是,我希望修改元素並更改元素引用。我無法動態創建for循環的正確數量,也無法使枚舉器失效。修改多維數組

編輯 感謝您的評論,對於以前在長時間勞累的一天結束時缺乏清晰度感到遺憾。問題:

private void SetMultiDimensionalArray(Array array) 
{ 
    for (int dimension = 0; dimension < array.Rank; dimension++) 
    { 
     var len = array.GetLength(dimension); 
     for (int k = 0; k < len; k++) 
     { 
      //TODO: do something to get/set values 
     } 
    } 
} 

Array array = new string[4, 5, 6]; 
SetMultiDimensionalArray(array); 
Array array = new string[2, 3]; 
SetMultiDimensionalArray(array); 

我再看看閱讀本頁面之前,看來我需要做的就是創建整數數組列表,並使用的GetValue的過載和的SetValue -

Array.GetValue(params int[] indices) 
Array.SetValue(object value, params int[] indices) 

一切現在似乎很清楚,除非有人可以提出一個更好的方法svick已經鏈接到這個,所以我會接受這個答案,除了任何進一步的建議。

+4

如果我能看到一些代碼,這將更容易概念化。 – paqogomez

+0

當然會編輯的問題,但直到明天現在thx –

+0

在c#中的數組實現'IEnumerable '。究竟是什麼問題? 看到這篇文章的一個很好的描述 - http://stackoverflow.com/questions/7173266/casting-array-to-ienumerablet – Caleb

回答

1

很難分辨出你需要什麼,因爲你的問題還不清楚。

但是,如果你有一個多維數組(非交錯數組),它的排名只在運行時知道,你可以使用GetValue()獲得在指定的索引值(假設爲int秒的陣列)和SetValue()來設置。