1. 程式人生 > 其它 >淺度複製(淺克隆)和深度複製(深克隆)

淺度複製(淺克隆)和深度複製(深克隆)

1.資料型別可以分為兩大類:基本型別和引用型別。

基本型別也稱為值型別,分別是字元型別 char,布林型別 boolean以及數值型別 byte、short、int、long、float、double。

引用型別則包括類、介面、陣列、列舉等。

記憶體空間分為堆和棧。基本型別直接在棧中儲存數值,而引用型別是將引用(地址值)放在棧中,實際儲存的值是放在堆中,通過棧中的引用(地址值)指向堆中存放的資料。

                                                               

上圖定義的a和b都是基本型別,其值是直接存放在棧中的;而c和d是String宣告的,這是一個引用型別,引用地址是存放在棧中,然後指向堆的記憶體空間。

下面d = c;這條語句表示將c的引用賦值給d,那麼c和d將指向同一塊堆記憶體空間。

2.淺複製:在C#中呼叫 MemberwiseClone() 方法即為淺複製。如果欄位是值型別的,則對欄位執行逐位複製,如果欄位是引用型別的,則複製物件的引用,而不復制物件,因此:原始物件和其副本引用同一個物件!

3.深複製:如果欄位是值型別的,則對欄位執行逐位複製,如果欄位是引用型別的,則把引用型別的物件指向一個全新的物件!

4.連結:C# 深淺複製 MemberwiseClone - 天才臥龍 - 部落格園 (cnblogs.com)