0

我创建了一个多维数组,并希望将整个内部数组设置为一个单独的(一维)数组。除了遍历数组中的每个位置和设置之外,我该怎么做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
}

我得到的具体错误是:

“处理的参数异常:数组不是一维数组。”

4

1 回答 1

5

您正在将“锯齿状”数组(数组的数组)与多维数组混合。您想要使用的可能是锯齿状数组(因为没有人会想使用 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 数组是具有许多单元的单个整体“对象”。相反,数组的数组是许多对象:对于 2d 锯齿状数组,一个对象用于行“结构”(外部容器),一个对象用于每个“行”。所以最后使用锯齿状数组你必须做一个new int[20, 20],使用锯齿状数组你必须做一个new int[20][],它将myArray[x] = new int[20]为每行创建 20 行和 20 个(x = 0...19)一个。啊...我忘记了:锯齿状数组可以是“锯齿状的”:每个“行”可以有不同数量的“列”。(我告诉你的一切即使对 3d 和 *d 数组也是有效的 :-) 你只需要放大它)

于 2011-10-14T16:05:31.937 回答