{
public string name = "jmj";
public DrawBase()
{
}
public object Clone()
{
return this as object; //引用同一個對象
return this.MemberwiseClone(); //淺複製
return new DrawBase() as object;//深複製
}
}
class Program
{
static void Main(string[] args)
{
DrawBase rect = new DrawBase();
Console.WriteLine(rect.name);
DrawBase line = rect.Clone() as DrawBase;
line.name = "a9fs3";
Console.WriteLine(rect.name);
DrawBase ploy = line.Clone() as DrawBase;
ploy.name = "lj";
Console.WriteLine(rect.name);
Console.WriteLine(object.ReferenceEquals(line, ploy));
Console.ReadLine();
}
}
運行結果:
return this as object; //引用同一個對象
輸出:jmj
a9fs3
lj
True
return this.MemberwiseClone(); //淺複製
return new DrawBase() as object;//深複製
輸出均為: jmj
jmj
jmj
False
解釋:
return this as object 方法總是引用同一個對象,因此相應的堆記憶體上的值會改變!
後兩種方法都是對對象的複製,區別在於複製的類別不同:深複製會複製整個填充的對象,包括該對象中其他引用類型和值類型的值;而淺複製只複製了一個對象中所有引用,它沒有值的複製,通過引用它們的其他對象的引用來共享它們。
相關詞條
-
clone
無性繁殖的英文名稱叫"Clone",譯音為"克隆",實際上,英文的"Clone"起源於希臘文 "Klone",原意是用"嫩枝"或"插條"繁殖。時至今日,...
基本簡介 克隆分類 研究歷程 克隆歷史 克隆利弊 -
C指針編程之道
C指針編程之道是人民郵電出版社出版的。《C指針編程之道》由孔浩、張華傑、陳猛編著,是一本幫助程式設計師提高編程素養的圖書,書中結合開發人員多年的編程經驗和感...
圖書信息 內容簡介 編輯推薦 目錄 -
ghost[軟體]
:即分區,在作業系統里,每個硬碟盤符(C糟以後)對應著一個分區;Image...如果硬碟中備份的分區數據受到損壞,用一般數據修複方法不能修復,以及系統...
版本介紹 分區備份 使用指南 使用技巧 異同比較 -
PHP[超文本預處理器]
Rasmus Lerdorf 的個人履歷,以及統計網頁流量。後來又用C...PHP的特性包括:1. PHP 獨特的語法混合了 C、Java、Perl...支持幾乎所有流行的資料庫以及作業系統。4. 最重要的是PHP可以用C、C...
發展 開發工具 特性 優勢 技術套用 -
ghost[美國賽門鐵克公司旗下的硬碟備份還原工具]
,在作業系統里,每個硬碟盤符(C糟以後)對應著一個分區;Image:鏡像...還原如果硬碟中備份的分區數據受到損壞,用一般數據修複方法不能修復,以及...
版本介紹 分區備份 使用指南 使用技巧 異同比較 -
硬碟對拷
設定成ide0啟動,或者C糟啟動。這樣進入ghost之後,第一個盤就是源盤...) 複製分區複製分區的方法很簡單,首先選擇來源區,再選擇目的區,確定就可以了,與磁碟之間的複製方法基本一樣。備份分區注意:若要使用備份分區功能...
簡介 具體步驟 ghost 其他 -
諾頓克隆精靈
系統升級,備份和恢復,以快速簡單的方法避免電腦中數據的遺失或損毀;人性化...受到損壞,用一般數據修複方法不能修復,以及系統被破壞後不能啟動,都可以用...
系統需求 安裝缷載 詳細介紹 功能操作 -
Ghost標準教程
損壞,用一般數據修複方法不能修復,以及系統被破壞後不能啟動,都可以用備份...
-
GHOST 8.3
,用一般數據修複方法不能修復,以及系統被破壞後不能啟動,都可以用備份...
分區備份 硬碟克隆與備份 備份還原 區域網路操作 實現 PXE 網路啟動方式