物件複製是將資料物件的屬性複製到同一資料類型的另一個物件的過程。在.Net淺拷貝和深拷貝是用於在物件之間複製資料的。以下這篇文章就來帶大家簡單認識一下.Net中淺拷貝和深拷貝,希望對大家有幫助。
什麼是淺拷貝?
淺拷貝會建立一個新對象,然後將目前對象的非靜態欄位複製到新對象。如果該欄位是值類型,則執行該欄位的逐位複製。如果該欄位是引用類型,則複製唯一的引用,但不複製引用的物件本身;因此原始和複製引用相同的物件。 【影片教學推薦:ASP.NET教學】
對象的淺層副本是新對象,其實例變數與舊對象相同。在.Net淺拷貝是由物件方法MemberwiseClone()完成的。
如果你有一個帶有值的對象,並且你想在同一類型的另一個變數中建立該對象的副本,那麼你可以使用淺拷貝,所有屬於值類型的屬性值都會被複製,但如果你如果具有引用類型的屬性,則不會複製此實例,而只會引用該實例。
什麼是深拷貝?
深拷貝是建立一個新對象,然後將目前物件的欄位複製到新建立的對象,以建立內部參考類型的完整副本的過程。如果欄位是值類型,則執行欄位的逐位複製。如果欄位是引用類型,則執行引用物件的新副本。
對象的深層副本是具有全新實例變數的新對象,它不會與舊對象共用物件。執行Deep Copy時,要複製的類別必須標記為[Serializable]。
深層複製旨在複製物件的所有元素,包括直接引用的值類型元素和引用類型的間接引用元素,引用類型包含對包含資料而不是包含資料本身的記憶體位置的引用。
以上就是這篇文章的全部內容,希望能對大家的學習有所幫助。更多精彩內容大家可以追蹤php中文網相關教學欄位! ! !
以上是淺談.Net中的淺拷貝和深拷貝的詳細內容。更多資訊請關注PHP中文網其他相關文章!