淺拷貝與深拷貝

淺拷貝:只複製對象的引用,而不復制對象的結構。此時拷貝對象與被拷貝對象的引用指向同一個對象(也可理解爲同一個內存地址),二者之中任一個對象發生變化,另外一個對象也會跟着變化。性能

  淺拷貝的用法在System.Collections命名空間中使用的比較多。一方面是由於建立一份大對象的副本對性能有影響;另外一方面是由於集合對象類型不必定都是可克隆的,假若對象中出現循環引用(即類型爲T的對象A中存在類型爲T的屬性/字段)將會致使深拷貝過程出現死循環。spa

深拷貝:複製對象的結構,使拷貝對象的引用指向複製對象。此時拷貝對象與被拷貝對象的引用指向不一樣的對象,二者之中任一個發生變化,另外一個不受影響。對象

  咱們經常使用的Json序列化與反序列化就是一種深拷貝。blog

下面用兩幅圖表示一下深拷貝與淺拷貝的差別:內存

相關文章
相關標籤/搜索