1

有没有办法做到以下几点?

int[,] multiArray = new int[5,5];

multiArray[0] = {0, 1, 3, 4, 5};
4

3 回答 3

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 };
于 2013-05-20T15:55:50.743 回答
0

我认为您想要做的是将数组的每个元素保存到 multiArray 的同一行但不同的列中。

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 循环来简化它。

于 2013-05-20T15:58:50.510 回答
0

由于 .NET 多维数组以行优先顺序存储,因此您可以Buffer.BlockCopy用于此操作(一次填充一整行)。请注意使用 ,sizeof(int)因为此方法对字节而不是元素进行操作(与诸如 之类的方法不同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));
于 2013-05-20T17:01:01.137 回答