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

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

為什么要在C#中實現(xiàn)ICloneable?

為什么要在C#中實現(xiàn)ICloneable?

繁花不似錦 2019-10-09 16:12:51
您能向我解釋為什么我應(yīng)該繼承ICloneable并實現(xiàn)該Clone()方法嗎?如果要進行深層復(fù)制,是否可以僅執(zhí)行我的方法?比方說MyClone()?我為什么要繼承ICloneable?有什么優(yōu)勢?這僅僅是使代碼“更具可讀性”的問題嗎?
查看完整描述

3 回答

?
蕪湖不蕪

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

你不應(yīng)該 Microsoft建議不要實施,ICloneable因為在界面上沒有明確指示您的Clone方法是執(zhí)行“深層”克隆還是“淺層”克隆。


查看完整回答
反對 回復(fù) 2019-10-09
?
尚方寶劍之說

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

ICloneable接口本身并不是很有用,也就是說,實際上在很多情況下,知道一個對象是可克隆的而不知道其他任何信息都是有用的。這種情況與例如IEnumerableor 截然不同IDisposable。在許多情況下,接受一個有用的信息IEnumerable而不是除枚舉它以外的任何事情都是有用的。

另一方面,ICloneable當與其他約束一起用作一般約束時,這可能會很有用。例如,基類可能有用地支持許多派生類,其中一些可以被有用地克隆,而另一些則不能。如果基本類型本身公開了公共克隆接口,則任何無法克隆的派生類型都將違反Liskov替換原理。避免此問題的方法是讓基本類型支持使用Protected方法的克隆,并允許派生類型在合適的情況下實現(xiàn)公共克隆接口。

完成此操作后,可以將想要接受某種WonderfulBase類型的對象并且需要能夠克隆它的方法進行編碼,以接受支持克隆的WonderfulBase對象(使用具有基本類型和ICloneable約束的通用類型參數(shù)) 。盡管該ICloneable接口本身并不表示深克隆或淺克隆,但有關(guān)文檔WonderfulBase將指出WonderfulBase可克隆對象應(yīng)是深克隆還是淺克隆。本質(zhì)上,該ICloneable接口不會完成定義所無法實現(xiàn)的任何事情ICloneableWonderfulBase,只是該接口可以避免必須為每個不同的可克隆基類定義不同的名稱。


查看完整回答
反對 回復(fù) 2019-10-09
?
12345678_0001

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

ICloneable是BCL中存在爭議的工件之一。恕我直言,沒有真正的理由來實施它。這樣說來,如果我要創(chuàng)建一個克隆方法,那么我會實現(xiàn)ICloneable,并且提供我自己的強類型版本的Clone

問題ICloneable是它從未表明Clone是淺拷貝還是深拷貝,它們是完全不同的東西。沒有任何事實ICloneable<T>可能表明微軟對ICloneable的想法


查看完整回答
反對 回復(fù) 2019-10-09
  • 3 回答
  • 0 關(guān)注
  • 1414 瀏覽

添加回答

舉報

0/150
提交
取消
微信客服

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

幫助反饋 APP下載

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

公眾號

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