我有一个列表,类似于“List< Block>”。 我想要的是获得一个与列表中的块相同的块,而不是列表中的对象。并且使用块修改圆顶并获得另一个。
但问题是,在获取块三次(列表的长度为3)之后,第四个块已被修改。我尝试了所有我知道的方法,甚至使用“new”,它只是获取列表中的对象,而不是同一个。
那么如何解决这个问题?
以下是我的一些代码:
a=[[a,b,c],3]
答案 0 :(得分:0)
修改强>
OP错误地将uWSGI==2.0.17
Flask==0.12.2
的新实例误认为是从Block
中撤出的实例,因为List<Block>
未在复制构造函数中克隆,而是简单地分配,因此导致两个唯一的实例List<Rectangle>
引用相同的Block
。
在这种情况下,正确的拷贝构造函数是:
List<Rectangle>
这需要在public Block(Block originalBlock)
{
this._block = new List<Rectangle>(originalBlock.block);
this._blockNum = originalBlock.blockNum;
}
类中使用类似的复制构造函数。
这应该适合你:
Rectangle
用法:
public class Block
{
private List<Rectangle> _block;
public List<Rectangle> block
{
get { return _block; }
}
private int _blockNum;
public int blockNum
{
get { return _blockNum; }
}
// Copy constructor
public Block(Block originalBlock)
{
// IMPORTANT: This does not create a new List<Rectangle>! See EDIT
this._block = originalBlock.block;
this._blockNum = originalBlock.blockNum;
}
}
阅读How to: Write a Copy Constructor (C# Programming Guide) | Microsoft Docs