2011-10-14 107 views
0

我创建了一个多维数组,并且想要将整个内部数组设置为等于单独的(单个维度)数组。我怎么能这样做,除了通过阵列中的每个位置并设置grid[row][val] = inputNums[val]在C中的多维数组中设置内部数组#

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 
} 

我发现了特定的错误是:

“Arguement异常来处理:阵列不是一维阵列”

回答

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阵列是一个单一的monolithical“对象”与许多细胞。数组的数组取代了许多对象:对于2d锯齿形数组,一个对象用于行“结构”(外部容器),一个用于每个“行”。因此,最后锯齿阵列,您必须做一个new int[20, 20],与一个锯齿阵列,你必须做一个new int[20][],将创建20行和20 myArray[x] = new int[20](与x = 0 ... 19)每行一个。啊......我忘记了:锯齿状的数组可以是“锯齿状的”:每个“行”可以有不同数量的“列”。 (即使对于3D和* d阵列,我所告诉你的所有内容都是有效的:-)你只需要将其缩放即可)