C# 如何";“翻转”;阵列?

C# 如何";“翻转”;阵列?,c#,arrays,xna,flip,C#,Arrays,Xna,Flip,我有以下代码: 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 -

我有以下代码:

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]; 
    }
}
BlockTypes[,]BackupQuad=EditModeBlocks.listofBlock//创建备份
对于(int x=0;x<16;x++)
{
对于(int y=0;y<16;y++)
{
//将每个点平移到另一侧
EditModeBlocks.ListofBlock[15-x,y]=BackupQuad[x,y];
}
}
首先,它组成一个备份(
BackupQuad
),然后在备份阵列中的每个“块”中循环。然后它从备份阵列读取数据块,并将其重写为15-X的原始阵列(我也尝试了16-X,但没有成功)。它在大部分情况下都能工作,但它会将一半复制到另一边,删除那里的所有内容。

首先,它构成一个备份(BackupQuad)

不,真的没有。这只需要一份参考资料。如果要获取实际对象的副本,必须显式执行此操作。例如:

BlockTypes[,] BackupQuad = (BlockTypes[,]) EditModeBlocks.ListOfBlocks.Clone();
首先,它构成一个备份(BackupQuad)

不,真的没有。这只需要一份参考资料。如果要获取实际对象的副本,必须显式执行此操作。例如:

BlockTypes[,] BackupQuad = (BlockTypes[,]) EditModeBlocks.ListOfBlocks.Clone();

太神了是仅使用数组,还是使用其他数据类型?因为我认为你必须明确地说你想要一个引用?@leaf68:不,它都是引用类型(类、接口、委托、数组)。这是理解C#的基础。有关更多详细信息,请参阅。好的,那么我如何以与复制数组相同的方式复制类?@leaf68:这取决于类-没有“通用”副本;它必须支持它自己。太棒了。是仅使用数组,还是使用其他数据类型?因为我认为你必须明确地说你想要一个引用?@leaf68:不,它都是引用类型(类、接口、委托、数组)。这是理解C#的基础。有关更多详细信息,请参阅。好的,那么我如何以与复制数组相同的方式复制类?@leaf68:这取决于类-没有“通用”副本;它必须支持自己。