這篇文章主要介紹.Net中的淺拷貝和深拷貝是什么意思,文中介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們一定要看完!
什么是淺拷貝?
淺拷貝會創(chuàng)建一個新對象,然后將當前對象的非靜態(tài)字段復制到新對象。如果該字段是值類型,則執(zhí)行該字段的逐位復制。如果該字段是引用類型,則復制唯一的引用,但不復制引用的對象本身;因此原始和克隆引用相同的對象。
對象的淺表副本是一個新對象,其實例變量與舊對象相同。在.Net淺拷貝是由對象方法MemberwiseClone()完成的。
如果你有一個帶有值的對象,并且你想在同一類型的另一個變量中創(chuàng)建該對象的副本,那么你可以使用淺拷貝,所有屬于值類型的屬性值都將被復制,但如果你如果具有引用類型的屬性,則不會復制此實例,而只會引用該實例。
什么是深拷貝?
深拷貝是創(chuàng)建一個新對象,然后將當前對象的字段復制到新創(chuàng)建的對象,以創(chuàng)建內(nèi)部引用類型的完整副本的過程。如果字段是值類型,則執(zhí)行字段的逐位復制。如果字段是引用類型,則執(zhí)行引用對象的新副本。
對象的深層副本是具有全新實例變量的新對象,它不與舊對象共享對象。執(zhí)行Deep Copy時,要克隆的類必須標記為[Serializable]。
深層復制旨在復制對象的所有元素,包括直接引用的值類型元素和引用類型的間接引用元素,引用類型包含對包含數(shù)據(jù)而不是包含數(shù)據(jù)本身的內(nèi)存位置的引用。
以上是“.Net中的淺拷貝和深拷貝是什么意思”這篇文章的所有內(nèi)容,感謝各位的閱讀!希望分享的內(nèi)容對大家有幫助,更多相關知識,歡迎關注創(chuàng)新互聯(lián)行業(yè)資訊頻道!