2010-03-16 2 views
1

Скажем, я создаю зазубренный 2d массив так:Как получить длину внутреннего массива в 2d массиве в C#?

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

Теперь, учитывая первый индекс массива, я хотел бы, чтобы определить длину внутреннего массива.

Я хотел бы быть в состоянии сделать что-то вроде:

phoneLetterMapping[2].length 

Я могу сделать это в Java. Но меню Intellisense не возвращает нормальные члены массива, когда я ввожу первую скобку массива [] [] 2d.

Как получить длину внутреннего массива моего 2d-массива в C#?

+0

Обратите внимание, что символ [,] не зазубренный массив, как и в других языках. Это истинный «многомерный» массив. Неверным массивом символов будет «char [] []». – Pete

ответ

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

Youre ищет GetLength

phoneLetterMapping.GetLength(dimension) 
+0

Неровный массив нельзя даже объявить так, как OP хочет его объявить, поэтому это не сработает. –

1

В C# есть два типа 2d массивов:

реальный 2d массива и неровный (массив массивов)

в вашем случае используется синтаксис для 2d массива, и если вы хотите, чтобы получить это длина вашего необходимо вызвать GetLength и указать измерение. В вашем случае это 1 (0 - первый), действительно, ваш код не будет компилироваться, потому что ваш массив не является прямоугольным - это обязательный параметр для массива 2d.

если вы хотите массив ткнул увидеть это: http://msdn.microsoft.com/en-us/library/2s05feca.aspx

Смежные вопросы