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

.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 に答える