jtf*_*ank 0 c# arrays jagged-arrays
我创建了一个多维数组,并希望将整个内部数组设置为等于单独的(单维)数组.除了遍历数组中的每个位置和设置外,我该怎么做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
}
Run Code Online (Sandbox Code Playgroud)
我得到的具体错误是:
"争议异常处理:数组不是一维数组."
您正在将"锯齿状"数组(数组数组)与多维数组混合.您想要使用的可能是锯齿状阵列(因为他心智正常的人不想使用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;
Run Code Online (Sandbox Code Playgroud)
md数组是具有许多单元的单个单片"对象".数组的数组是许多对象:对于2d锯齿状数组,一个对象用于行"结构"(外部容器),一个用于每个"行".所以最后用一个锯齿状的数组你必须做一个单独的new int[20, 20],一个锯齿状的数组,你必须做一个new int[20][]将为myArray[x] = new int[20]每一行创建20行和20 (x = 0 ... 19)一个.啊......我忘了:一个锯齿状的阵列可以"锯齿状":每个"行"可以有不同数量的"列".(我告诉你的一切甚至对3d和*d阵列都有效:-)你只需要扩展它)