有没有办法做到以下几点?
int[,] multiArray = new int[5,5];
multiArray[0] = {0, 1, 3, 4, 5};
答案 0 :(得分:3)
不,对于多维数组,这是不可能的。该数组具有固定的大小,编译器现在不允许分配给该数组的大小。
此外,编译器如何知道您是否打算这样做:
multiArray[0, 0..4] = { 1, 2, 3, 4, 5 };
或者这个:
multiArray[0..4, 0] = { 1, 2, 3, 4, 5 };
但是,您可以使用锯齿状数组:
int[][] multiArray = new int[5][];
multiArray[0] = new[] { 1, 2, 3, 4, 5 };
答案 1 :(得分:0)
我认为您要做的是将数组的每个元素保存到multiArray的同一行但是DIFFERENT列。
multiArray[0][0] = 0;
multiArray[0][1] = 1;
multiArray[0][2] = 2;
multiArray[0][3] = 3;
multiArray[0][4] = 4;
multiArray[0][5] = 5;
我相信这就是你要做的。您也可以使用for循环来简化此操作。
答案 2 :(得分:0)
由于.NET多维数组以行主顺序存储,因此您可以使用Buffer.BlockCopy
进行此操作(一次填充一整行)。请注意sizeof(int)
的使用,因为此方法对 bytes 进行操作,而非元素(与Array.Copy
等方法不同)。
int[,] multiArray = new int[5, 5];
int rowIndex = 0;
int[] rowData = { 0, 1, 3, 4, 5 };
int destOffset = rowIndex * sizeof(int) * multiArray.GetLength(0);
Buffer.BlockCopy(rowData, 0, multiArray, destOffset, rowData.Length * sizeof(int));