【问题标题】:How to "flip" an array?如何“翻转”数组?
【发布时间】:2012-11-11 06:40: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]; 
    }
}

首先它构成一个备份 (BackupQuad),然后循环遍历备份阵列中的每个“块”。然后它从备份数组中读取块并将其重写为原始数组 15 - X。(我也尝试了 16 - x,但没有用)。它在大多数情况下都有效,但它会将一半复制到另一侧,删除那里的所有内容。

【问题讨论】:

    标签: c# arrays xna flip


    【解决方案1】:

    首先它组成一个备份(BackupQuad)

    不,真的没有。这只需要 reference 的副本。如果你想复制实际的object,你必须明确地这样做。例如:

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

    【讨论】:

    • 太棒了。是仅对数组还是对其他数据类型也是如此?因为我认为您必须明确表示您需要参考?
    • @leaf68:不,都是引用类型(类、接口、委托、数组)。这是理解 C# 的基础。有关详细信息,请参阅pobox.com/~skeet/csharp/references.html
    • 好的,那么我将如何以与复制数组相同的方式复制一个类?
    • @leaf68:这取决于类 - 没有“通用”副本;它必须自己支持。
    猜你喜欢
    • 2010-12-03
    • 1970-01-01
    • 1970-01-01
    • 2016-11-16
    • 2013-07-18
    • 2017-01-14
    • 1970-01-01
    • 1970-01-01
    • 2021-03-15
    相关资源
    最近更新 更多