我真的不知道这些东西是如何在内部存储器/处理器中发生的。
我创建了一个名为Block
position的类。我也有一个List<Block>
存储我的块。
首先,我在该列表中添加一个 Block:
blocks.Add(new Block());
然后,我想克隆该块,以便在我的列表中有两个具有不同位置的独立块:
Block clonedBlock = blocks[0];
blocks.Add(clonedBlock);
但是当我改变新创建的块的位置时,我也改变了第一个块的位置。
为什么会这样做,有什么办法可以防止这种情况发生吗?
顺便说一句,我注意到列表似乎有一些奇怪的行为。例如在这种情况下:
List<Block> list01 = new List<Block>();
[... add some blocks to that list ...]
List<Block> list02 = list01; // also tried: List<Block> list02 = list01.ToList();
[... change item in list01 ...] --> also changes that item in list02
这让我猜测列表只包含指针之类的东西,当我尝试“克隆”一个块时,我只复制指针,但它指向的位置保持不变。同样的问题:有什么办法可以防止这种情况发生吗?
编辑:解决方案:Object.MemberwiseClone()- 方法