0

次のコードがあります。

BlockTypes[,] BackupQuad = EditModeBlocks.ListOfBlocks; //Create Backup

for (int x = 0; x < 16; x++)
{
    for (int y = 0; y < 16; y++)
    {
        //Translate each point to the opposite side
        EditModeBlocks.ListOfBlocks[15 - x, y] = BackupQuad[x, y]; 
    }
}

最初にバックアップ ( BackupQuad) を作成し、次にバックアップ配列内の各「ブロック」をループします。次に、バックアップ配列からブロックを読み取り、元の配列に 15 - X として再書き込みします (16 - x も試しましたが、機能しませんでした)。ほとんどの場合は機能しますが、半分を反対側にコピーし、そこにあるすべてを削除します。 ここに画像の説明を入力

4

1 に答える 1

5

まず、バックアップを作成します(BackupQuad)

いいえ、実際にはそうではありません。これは、参照のコピーを取得するだけです。実際のオブジェクトのコピーを取りたい場合は、明示的に行う必要があります。例えば:

BlockTypes[,] BackupQuad = (BlockTypes[,]) EditModeBlocks.ListOfBlocks.Clone();
于 2012-11-22T21:10:55.927 に答える