首頁  >  文章  >  後端開發  >  淺談.Net中的淺拷貝和深拷貝

淺談.Net中的淺拷貝和深拷貝

青灯夜游
青灯夜游原創
2019-01-29 15:28:374039瀏覽

物件複製是將資料物件的屬性複製到同一資料類型的另一個物件的過程。在.Net淺拷貝和深拷貝是用於在物件之間複製資料的。以下這篇文章就來帶大家簡單認識一下.Net中淺拷貝和深拷貝,希望對大家有幫助。

淺談.Net中的淺拷貝和深拷貝

什麼是淺拷貝?

淺拷貝會建立一個新對象,然後將目前對象的非靜態欄位複製到新對象。如果該欄位是值類型,則執行該欄位的逐位複製。如果該欄位是引用類型,則複製唯一的引用,但不複製引用的物件本身;因此原始和複製引用相同的物件。 【影片教學推薦:ASP.NET教學

淺談.Net中的淺拷貝和深拷貝

對象的淺層副本是新對象,其實例變數與舊對象相同。在.Net淺拷貝是由物件方法MemberwiseClone()完成的。

如果你有一個帶有值的對象,並且你想在同一類型的另一個變數中建立該對象的副本,那麼你可以使用淺拷貝,所有屬於值類型的屬性值都會被複製,但如果你如果具有引用類型的屬性,則不會複製此實例,而只會引用該實例。

什麼是深拷貝?

深拷貝是建立一個新對象,然後將目前物件的欄位複製到新建立的對象,以建立內部參考類型的完整副本的過程。如果欄位是值類型,則執行欄位的逐位複製。如果欄位是引用類型,則執行引用物件的新副本。

淺談.Net中的淺拷貝和深拷貝

對象的深層副本是具有全新實例變數的新對象,它不會與舊對象共用物件。執行Deep Copy時,要複製的類別必須標記為[Serializable]。

深層複製旨在複製物件的所有元素,包括直接引用的值類型元素和引用類型的間接引用元素,引用類型包含對包含資料而不是包含資料本身的記憶體位置的引用。

以上就是這篇文章的全部內容,希望能對大家的學習有所幫助。更多精彩內容大家可以追蹤php中文網相關教學欄位! ! !

以上是淺談.Net中的淺拷貝和深拷貝的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn