以下を行う方法はありますか?
int[,] multiArray = new int[5,5];
multiArray[0] = {0, 1, 3, 4, 5};
以下を行う方法はありますか?
int[,] multiArray = new int[5,5];
multiArray[0] = {0, 1, 3, 4, 5};
いいえ、多次元配列では、これは不可能です。配列のサイズは固定されており、コンパイラは配列に割り当てることができるサイズを知りません。
また、コンパイラは、これを行うつもりであるかどうかをどのように認識しますか:
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 };
.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));