2012-01-25 71 views
3

我想知道,如果有可能使用數組訪問多維數組的特定元素,而不是多個整數。訪問數組與指數數組

例如像:

int[,] map = sampleMap; 
int[] position = { 1, 2 }; 

sampleObject = map[position]; // This line won't work. "cannot implicitly convert type 'int[]' to 'int'" 

相反的:

sampleObject = map[position[1], position[2]] 

當然,只有2個維度工作時,它不會是太大的問題,但是想象一下,我有很多尺寸,如10:

map[position[1], position[2], position[3], ..., position[10]] 

它會更好,更優雅,只寫:

map[position] 

我一直在四處尋找,但我發現最好的是「如何訪問數組中的[在此插入編程語言]」或「如何訪問元素從[插入數組類型在這裏]」或類似的東西那。

回答

5

看看Array.GetValue(int[])方法

+0

yup,that works:\t'int [,] map = {{1,1},{1,2},{1,3}}; \t Console.WriteLine(map.GetValue(new [] {1,1})); // 2' –

0

這裏有一個認爲

假設你的數組包含20行和20列。

比方說,你要訪問地圖中的26號元素(從地圖上看,自上而下從左到右的開始),

所以,你的協調函數接受26作爲一個參數,並

26/20 = 1 
26 % 20 - 1 = 5 

轉化map[26]map[1, 5],返回它的值

不太清楚,如果這將有助於你, 只是一個想法!

+0

確實,這是可行的,但我仍然更喜歡Novakov建議的Array.GetValue(int [])方法。它更直觀,使用起來更容易,尤其是在處理多個維度時。 – Nolonar