問題情境:
需要完全複製(深拷貝)另乙個例項,以保留現有的物件作後續處理等作用。
原理綜述:
物件的淺拷貝僅需在該類中新增乙個方法:
public myimage clone()
深拷貝有幾種:
針對可序列化([serializable])的類,可以宣告利用二進位制或序列化進行拷貝的方法。網上有我不再贅述。
不方便序列化的類,利用反射。具體做法見下。
解決**:
publicstatic
myimage clone(myimage obj)
);//
呼叫有參建構函式進行初始化,懶得進行具體分類討論思考合成乙個方法,借鑑者可以考慮下
fieldinfo fields = obj.gettype().getfields(bindingflags.public | bindingflags.nonpublic | bindingflags.static |bindingflags.instance);
foreach (var field in
fields)
catch
}return
(myimage)retval;
}private
static t clone2(t obj)
catch
}return
(t)retval;
}
iOS 深拷貝淺拷貝例項
nsstring string 漢斯哈哈哈 沒有產生新物件 nsstring copystring string copy 產生新物件 nsmutablestring mutablecopystring string mutablecopy nslog string p copystring p m...
JS的深拷貝 與 淺拷貝 例項
js中的變數型別分為 基本型別 和 引用型別 對基本型別進行複製操作會對值進行乙份拷貝,而對引用型別賦值,則會進行位址的拷貝,最終兩個變數指向同乙份資料。基本型別 var a 1 var b a a 2 console.log a,b 2,1 a b指向不同的資料 引用型別 指向同乙份資料 var ...
類的拷貝管理
拷貝控制 拷貝建構函式,拷貝賦值運算子,移動建構函式,移動賦值運算子,析構函式 拷貝建構函式 class sales data sales data sales data const sales data orig bookno orig.bookno uints sold orig.uints s...