Установить внутренний массив в многомерном массиве в C # - PullRequest
0 голосов
/ 14 октября 2011

Я создал многомерный массив и хочу установить весь внутренний массив равным отдельному (одномерному) массиву. Как я могу это сделать, помимо прохождения каждой позиции в массивах и установки grid[row][val] = inputNums[val]?

int[,] grid = new int[20,20];

// read a row of space-deliminated integers, split it into its components
// then add it to my grid
string rowInput = "";
for (int row = 0; (rowInput = problemInput.ReadLine()) != null; row++) {
    int[] inputNums = Array.ConvertAll(rowInput.Split(' '), (value) => Convert.ToInt32(value))
    grid.SetValue(inputNums , row); // THIS LINE DOESN'T WORK
}

Конкретная ошибка, которую я получаю:

«Обработано исключение аргумента: массив не был одномерным массивом.»

1 Ответ

5 голосов
/ 14 октября 2011

Вы смешиваете «зубчатые» массивы (массивы массивов) с многомерными массивами.Возможно, вы захотите использовать неровные массивы (потому что никто в здравом уме не захочет использовать массивы md :-))

int[][] grid = new int[20][];

// ...
grid[row] = inputNums;

// access it with
grid[row][col] = ...

// columns of a row:
var cols = grid[row].Length;

// number of rows:
var rows = grid.Length;

Массив md - это один монолитный «объект» со многими ячейками.Массивы массивов - это вместо многих объектов: для двумерного неровного массива один объект предназначен для строки «структура» (внешний контейнер), а другой - для каждой «строки».Таким образом, в конце с неровным массивом вы должны сделать один new int[20, 20], с неровным массивом вы должны сделать new int[20][], который создаст 20 строк и 20 myArray[x] = new int[20] (с x = 0 ... 19) один длякаждый ряд.Ах ... я забыл: зубчатый массив может быть "зубчатым": у каждой "строки" может быть разное количество "столбцов".(все, что я вам сказал, действительно даже для трехмерных и * d массивов :-) Вам нужно только увеличить его)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...