- 題名: 2次元配列のサイズ変更
- 日時: 2005/11/18 15:06:35
- ID: 13784
- この記事の返信元:
- (なし)
- この記事への返信:
- [13785] Re[1]: 2次元配列のサイズ変更2005/11/18 17:25:01
- ツリーを表示
多次元配列のときは、1次元目の要素ごとに 2次元目の要素をコピーしなければいけないのではないでしょうか? //要素数2×5の配列を作る int[][] intArray = new int[][]{new int[]{0, 1, 2, 3, 4}, new int[]{5, 6, 7, 8, 9}}; //要素数2×6の配列を作る int[][] newArray = new int[2][]; newArray[0] = new int[6]; newArray[1] = new int[6]; //配列の要素をコピーする Array.Copy(intArray[0], newArray[0], Math.Min(intArray[0].Length, newArray[0].Length)); Array.Copy(intArray[1], newArray[1], Math.Min(intArray[1].Length, newArray[1].Length)); //できた配列をintArrayに戻す intArray = newArray; C#でReDim Preserveの代わりになるものは? http://dobon.net/vb/dotnet/vb2cs/redimpreserve.html を参考にしました。
分類:[ASP.NET]
2次元配列のサイズ変更をここの「C#でReDim Preserveの代わりになるものは?」
というTip'sを参考にして作成したのですが、動かしてみますと、サイズは変更するが、値の格納場所(インデックス)がずれてしまう現象が出ました。
以下、方法でやっていますが何かまずいところがあるのでしょうか?
すみませんが、お知恵を貸してください。
for(Int32 i= 0;i <= ds.Tables[0].Rows.Count - 1;i++) {
int[,] newNumbers2 = new int[strWork1.Length,i+1];
Array.Copy(intLevCnt, newNumbers2, intLevCnt.Length);
intLevCnt = newNumbers2;
//配列にデータをセット
処理略
}
intLevCntに
[0,0]=0
[0,1]=1
だったものがサイズを変更した時点で(デバッグモードで確認)
[0,0]=1
[0,1]=0
[0,2]=0
となってしまいます。