第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號安全,請及時(shí)綁定郵箱和手機(jī)立即綁定
已解決430363個(gè)問題,去搜搜看,總會有你想問的

如何獲得對象的副本

如何獲得對象的副本

C#
慕慕森 2021-05-03 15:25:17
我有一個(gè)列表,類似這樣的“ List <Block>”。我想要的是獲得一個(gè)與列表中的塊相同的塊,而不是列表中的對象。并用塊修改圓頂并獲得另一個(gè)。但是問題是,在獲取了三次塊(列表的長度為3)之后,第四個(gè)塊已經(jīng)被修改。我嘗試了我所知道的所有方法,甚至使用“ new”,它只是將對象添加到列表中,而不是同一對象。那么如何解決呢?這是我的一些代碼://This is the list which length is 3private List<BlockType> blocks;//At the beginning it was like this but not work//private List<Block> blocks;//In a function to get a block type randomlyint blockNum = rand.Next(0, 3); //rand is a Random typethis.cBlock = new Block(blocks[blockNum]); //cBlock is object which I use to do something about the block//The class Block goes toclass Block{    private List<Rectangle> _block;    public List<Rectangle> block    {        get { return _block; }    }    private int _blockNum;    public int blockNum    {        get { return _blockNum; }    }    public Block()    {    }    public Block(int blockNum, List<Rectangle> block)    {        this._block = block;        this._blockNum = blockNum;    }    public Block(BlockType block)    {        this._block = block.block;        this._blockNum = block.blockNum;    }}//And the BlockType is what I tried but does not workclass BlockType{    private List<Rectangle> _block;    public List<Rectangle> block    {        get { return _block; }    }    private int _blockNum;    public int blockNum    {        get { return _blockNum; }    }    public BlockType()    {    }    public BlockType(int blockNum, List<Rectangle> block)    {        this._block = block;        this._blockNum = blockNum;    }}
查看完整描述

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);


查看完整回答
反對 回復(fù) 2021-05-29
  • 1 回答
  • 0 關(guān)注
  • 143 瀏覽

添加回答

舉報(bào)

0/150
提交
取消
微信客服

購課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動學(xué)習(xí)伙伴

公眾號

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號