程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> .NET網頁編程 >> C# >> C#入門知識 >> C#點滴之深拷貝與淺拷貝

C#點滴之深拷貝與淺拷貝

編輯:C#入門知識

淺拷貝與深拷貝區別在與處理引用類型的不同,處理值類型是完全一樣的。當處理值類型時,兩種拷貝方式都是直接分配新的內存區域同時復制值類型的值。處理引用類型時,淺拷貝僅僅復制它的地址,而不會產生一個新的對象。深拷貝則要求產生新的對象,並且將原對象的值復制到新對象中去。

 

實現方式:

1. 對於值類型:
淺拷貝: 通過賦值等操作直接實現,將對象中的值類型的字段拷貝到新的對象中。
深拷貝:通過賦值等操作直接實現,將對象中的值類型的字段拷貝到新的對象中。 和淺拷貝相同

2. 對於引用類型:
值類型: Object.MemberwiseClone 方法創建一個淺副本,方法是創建一個新對象,如果字段是值類型的,則對該字段執行逐位復制。如果字段是引用類型,則復制引用原始對象,與原對象引用同一對象。


引用類型:拷貝對象應用,也拷貝對象實際內容,也就是創建了一個新的改變新對象 不會影響到原始對象的內容。這種情況需要為其實現ICloneable接口中提供的Clone方法。


差別就是在對於引用類型的實現深拷貝和淺拷貝的時候的機制不同,前者是MemberwiseClone 方法實現,後者是通過繼承實現ICloneable接口中提供的Clone方法,實現對象的深入拷貝。

    

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved