2010-03-16 147 views
1

比方說,我創建了一個鋸齒狀的二維數組,像這樣:如何在C#中的二維數組中獲取內部數組的長度?

public static char[,] phoneLetterMapping = { {'0'}, {'1'}, {'A', 'B', 'C'} }; 

現在,考慮到數組的第一個指標,我想確定內部數組的長度。

我希望能夠做這樣的事情:

phoneLetterMapping[2].length 

我可以在Java中做到這一點。但是當我輸入[] [] 2d數組的第一個括號時,Intellisense菜單不會返回數組的正常成員。

如何在C#中獲得我的二維數組的內部數組長度?

+0

注意,那的char [,]不是鋸齒狀排列,就像在其他語言。這是一個真正的「多維」數組。鋸齒形的字符數組將是'char [] []'。 – Pete 2010-03-16 19:57:09

回答

4

您發佈甚至不會在C#中,這是你的主要問題,編譯聲明。

您已經使用char[,]聲明瞭一個2D非鋸齒陣列,但您試圖使用{ {'0'}, {'1'}, {'A', 'B', 'C'} }實例化「=」右側的鋸齒陣列。

現在,如果你不同的聲明是:

public static char[][] phoneLetterMapping = { new[] { '0' }, new[] { '1' }, new[] { 'A', 'B', 'C' } }; 

然後,你可以簡單地調用類似:

phoneLetterMapping[0].Length; 

的代碼,你張貼在第一線,但是,不會編譯C#。

1

您是在尋找對GetLength

phoneLetterMapping.GetLength(dimension) 
+0

一個鋸齒形的數組甚至不能以OP想要聲明它的方式聲明,所以這不起作用。 – 2010-03-16 19:45:57

1

在C#中,有兩種類型的二維數組:你的情況,你所用的語法二維數組和

真正的二維數組和鋸齒(數組的數組)

,如果你想獲得它的長度你需要調用GetLength並指定維度。在你的情況下,它是1(0是第一個)真的你的代碼不會編譯,因爲你的數組不是矩形 - 它是2d數組必須的。

如果你想捅陣列看到這一點:http://msdn.microsoft.com/en-us/library/2s05feca.aspx