1 回答

TA貢獻(xiàn)1860條經(jīng)驗(yàn) 獲得超8個(gè)贊
編輯:
OP被誤以為是一個(gè)新實(shí)例,因?yàn)樗鼪]有在復(fù)制構(gòu)造函數(shù)中克隆,而是被簡單地分配了,因此Block被引出了一個(gè)實(shí)例,因此導(dǎo)致兩個(gè)唯一的實(shí)例引用同一個(gè)實(shí)例。List<Block>List<Rectangle>BlockList<Rectangle>
在這種情況下,正確的副本構(gòu)造函數(shù)將是:
public Block(Block originalBlock)
{
this._block = new List<Rectangle>(originalBlock.block);
this._blockNum = originalBlock.blockNum;
}
在Rectangle類中需要類似的復(fù)制構(gòu)造函數(shù)。
這應(yīng)該為您工作:
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;
}
}
用法:
Block originalBlock = new Block();
// Returns a new instance of Block with similar member data.
Block copiedBlock = new Block(originalBlock);
- 1 回答
- 0 關(guān)注
- 143 瀏覽
添加回答
舉報(bào)