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

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

可以幫忙解釋一下,C#關于深度復制的問題嗎?具體代碼如下

可以幫忙解釋一下,C#關于深度復制的問題嗎?具體代碼如下

郎朗坤 2021-11-19 15:11:43
使用下面的深度復制代碼;public class Content{public int Val;}public class Cloner:ICloneable{public Content MyContent=new Content();public Cloner(int newVal){MyContent.Val=newVal;}public object Clone(){Cloner clonerCloner=new Cloner(MyContent.Val);return clonerCloner;}}其中使用包含在源Cloner對象中的Content對象(MyContent)的Val字段,創(chuàng)建一個新Cloner對象。這個字段是一個值類型,所以不需要深度復制使用下面的代碼測試:Cloner mySource = new Cloner(5);Cloner mytarget = (Cloner)mySource.GetCopy();Console.WriteLine("myTarget.MyContent.Val={0}", mytarget.MyContent.Val);mySource.MyContent.Val = 2;Console.WriteLine("myTarget.MyContent.Val={0}", mytarget.MyContent.Val);得到如下結(jié)果:myTarget.MyContent.Val=5myTarget.MyContent.Val=5這次包含的對象是獨立的。注意有時在比較復雜的對象系統(tǒng)中,調(diào)用Clone()是一個遞歸過程。如,如果Cloner類的MyContent字段也需要深度復制,就要使用下面的代碼:(這句話要怎么理解,Cloner類的MyContent字段也需要深度復制,上面不是已經(jīng)對MyContent進行了深度復制么,為什么調(diào)用Clone()是一個遞歸過程?)public class Cloner:ICloneable{public Content MyContent=new Content();...public object Clone(){Cloner clonerCloner=new Cloner();clonerCloner.MyContent=MyContent.Clone();return clonerCloner;}}這里調(diào)用了默認的構(gòu)造函數(shù),以便簡化創(chuàng)建一個新Cloner對象的語法。為使這段代碼能正常工作,還需要在Content類上實現(xiàn)ICloneable接口(能否幫忙給出在Content類上實現(xiàn)IConeable的代碼)
查看完整描述

2 回答

?
慕標5832272

TA貢獻1966條經(jīng)驗 獲得超4個贊

有的時候,創(chuàng)建一個對象可能會非常耗時,比如對象需要從遠程數(shù)據(jù)庫中獲取數(shù)據(jù)來填充,又或者創(chuàng)建對象需要讀取硬盤文件。此時,如果已經(jīng)有了一個對象,再創(chuàng)建新對象時,可能會采用復制現(xiàn)有對象的方法,而不是重新建一個新的對象。
淺度復制 和 深度復制 是以如何復制對象的成員(member)來劃分的。一個對象的成員有可能是值類型,有可能是引用類型。當我們對對象進行一個淺度復制的時候,對于值類型成員,會復制其本身(值類型變量本身包含了所有數(shù)據(jù),復制時進行按位拷貝);對于引用類型成員(注意它會引用另一個對象),僅僅復制引用,而不創(chuàng)建其引用的對象。結(jié)果就是:新對象的引用成員和 復制對象的引用成員 指向了同一個對象。

深度復制就是將引用成員指向的對象也進行復制。實際的過程是創(chuàng)建新的引用成員指向的對象,然后復制對象包含的數(shù)據(jù)。深度復制可能會變得非常復雜,因為引用成員指向的對象可能包含另一個引用類型成員,最簡單的例子就是一個線性鏈表。如果一個對象的成員包含了對于線性鏈表結(jié)構(gòu)的一個引用,淺度復制 只復制了對頭結(jié)點的引用,深度復制 則會復制鏈表本身,并復制每個結(jié)點上的數(shù)據(jù)。

查看完整回答
反對 回復 2021-11-24
?
一只甜甜圈

TA貢獻1836條經(jīng)驗 獲得超5個贊

關鍵類象內(nèi)引用淺拷貝保持引用類象內(nèi)引用深拷貝連引用象起拷貝
比School類邊SchoolName校名稱teacher象
淺拷貝拷貝SchoolNameteacher前引用象(拷貝象修改teacher值影響象teacher值)深拷貝連teacher拷貝新象前象完全復制修改teacher值影響象teacher值

查看完整回答
反對 回復 2021-11-24
  • 2 回答
  • 0 關注
  • 384 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

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

幫助反饋 APP下載

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

公眾號

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