2014-12-16 5 views
1

Я хочу, чтобы инициализировать массив массивов, как в Java:Инициализировать массив массивов с длиной набора массива

int[][] arrPos=new int[16][48]; 
int[][] arrPosOther=new int[16][48]; 

и я могу установить значение строки массива, как это:

arrPos[0]=arrPosOther[0]; 

и Я могу установить значение ячейки, как это:

arrPos[1][0]=125; 

, но в C#, я могу заявить только так:

int[][] arrPos=new int[16][]; 

не может установить значение столбца при инициализации.

+1

В C# у вас есть 2 вариант - мульти-х мерный массив 'ИНТА [,],' ИНТ [,,] 'или неровный массив' ИНТ [] [] ' , Эти 2 будут охватывать все потребности в массиве –

+0

Я знаю тип jagged, но я хочу инициализировать массив массивов, например arr [255] [255], я не могу представить эту сцену. –

+0

Если вы спросите меня, это 'arr [255] [255]' не имеет никакого смысла, потому что вы объявляете массив из 256 элементов из '255'. Второй '[]' находится там, где находится другой массив, а не какое-то целое –

ответ

3

Похоже, вы пытаетесь найти способ инициализации Jagged массива в C#: пожалуйста, обратитесь к следующему примеру:

int[][] jaggedArray2 = new int[][] 
{ 
    new int[] {1,3,5,7,9}, 
    new int[] {0,2,4,6}, 
    new int[] {11,22} 
}; 

Короткая форма для той же образцы показан ниже:

int[][] jaggedArray2 = 
{ 
    new int[] {1,3,5,7,9}, 
    new int[] {0,2,4,6}, 
    new int[] {11,22} 
}; 

Вы также можете выполнить инициализацию в несколько этапов:

int[][] jaggedArray = new int[3][]; 

jaggedArray[0] = new int[5]; 
jaggedArray[1] = new int[4]; 
jaggedArray[2] = new int[2]; 

jaggedArray[0] = new int[] { 1, 3, 5, 7, 9 }; 
jaggedArray[1] = new int[] { 0, 2, 4, 6 }; 
jaggedArray[2] = new int[] { 11, 22 }; 

И Аппар вы можете реализовать своего рода цикл for или foreach, чтобы заполнить массив из некоторой структуры данных. Дополнительная информация доступна по адресу: http://msdn.microsoft.com/en-us/library/2s05feca.aspx

Кроме того, вам следует, вероятно, рассмотреть использование многомерного массива, например int[,] (синтаксис C# в этом случае отличается от Java lang). Надеюсь, это поможет.

+0

Но если значение строки или столбца огромно, этот тип инициализации неудобен –

+1

Если вы не хотите, чтобы массив был зазубрен, почему бы просто не использовать вместо него 2d-массив? В противном случае вам понадобится использовать for-loop. – Blorgbeard

+0

@AndyFong Просто прочитайте страницу MSDN, на которую ссылаются здесь –

1

Синтаксис отсутствует.

Одним из вариантов заявления может быть

int[][] arrPos = Enumerable.Range(0, length).Select(_ => new int[length]).ToArray(); 
+0

Alexei, вы опубликовали хороший пример, но из дискуссионного потока кажется, что OP действительно ищет многомерный массив int [,] (AFAIC, у них нет такого синтаксиса в Java). С наилучшими пожеланиями, –

+1

@AlexBell - может быть ... С другой стороны, пока OP не изменяет вопрос в соответствии с комментариями, ваши ответы стоят. Не стесняйтесь редактировать в этом примере в свой ответ. (Я также добавил комментарий к вашему вопросу, поэтому OP, вероятно, должен задать новый вопрос, уточняющий, какова цель). –

+0

да, я согласен: лучше оставить еще один, если останутся все вопросы. Thx и приветствует, –

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