Инициализировать массив массивов с заданной длиной массива

1

Я хочу инициализировать массив массивов, например, в java:

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

и я могу установить значение массива строк следующим образом:

arrPos[0]=arrPosOther[0];

и я могу установить значение ячейки следующим образом:

arrPos[1][0]=125;

но в С# я могу объявить только вот так:

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

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

  • 1
    В C # у вас есть 2 варианта - многомерный массив int[,] , int[,,] или зубчатый массив int[][] . Эти 2 покроют все потребности массива
  • 0
    Я знаю зубчатый тип, но я хочу инициализировать массив массивов, таких как arr [255] [255], я не могу отобразить эту сцену.
Показать ещё 3 комментария
Теги:
arrays
jagged-arrays

2 ответа

3
Лучший ответ

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

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[,] (синтаксис С# в этом случае отличается от Java lang). Надеюсь, это поможет.

  • 0
    Но если значение строки или столбца огромно, этот тип инициализации неудобен
  • 1
    Если вы не хотите, чтобы массив был неровным, почему бы просто не использовать вместо него 2d массив? В противном случае вам нужно будет использовать цикл for.
Показать ещё 5 комментариев
1

Синтаксиса нет.

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

 int[][] arrPos = Enumerable.Range(0, length).Select(_ => new int[length]).ToArray();
  • 0
    Алексей, вы опубликовали хороший пример, но из ветки обсуждения кажется, что OP на самом деле ищет многомерный массив int [,] (AFAIC, у них нет такого синтаксиса в Java). С уважением,
  • 1
    @AlexBell - возможно ... С другой стороны, до тех пор, пока ОП не отредактирует вопрос, чтобы соответствовать комментариям, ваши ответы остаются в силе. Не стесняйтесь редактировать этот пример в своем ответе. (Я также добавил комментарий к этому вопросу, поэтому OP, вероятно, должен задать новый вопрос, разъясняющий, какова цель).
Показать ещё 1 комментарий

Ещё вопросы

Сообщество Overcoder
Наверх
Меню