一、方法體
是乙個靜態方法copyhelper,包含以下三個部分
1、給propertyinfo型別加個擴充套件的方法,方便進行查詢是否存在相同型別,相同名稱的字段。
///2、淺拷貝的主體方法,即呼叫上面的方法基礎上,如果不為空,並且允許寫入的話,則用setvalue方法進行賦值///propertyinfo擴充套件方法,通過名稱獲得屬性
/// ///
//////
private
static propertyinfo getpropertybyname(this
propertyinfo p,propertyinfo pro)
///3、向外暴露乙個擴充套件copy方法,執行呼叫///淺拷貝
/// ///
///原始的vo
///vm下的vo
///private
static t o2m(object
vo,t viewmodel)
return
viewmodel;
}private
static t o2m(object vo) where t :new
()
///二、測試///將欄位名稱一致,型別一致的屬性賦值(用於viewmodel和vo相互轉化)
/// ///
//////
///注意此賦值為淺拷貝,model會重新new()
public
static t copyto(this
object vo) where t :new
()
//////
將欄位名稱一致,型別一致的屬性賦值(用於viewmodel和vo相互轉化)
/// ///
//////
///注意此賦值為淺拷貝,model會重新new()
public
static
bool copyto(this
object vo,t model)where t :new
()
1、新建兩個實體類,humanvo和studentvo
publicclass
humanvo
set }
public
intage
set }
public
bool
***
set }
}
public2、給humanvo進行賦值class
studentvo
set }
public
intage
set }
public
bool
***
set }
public
string
class
set }
public
string
school
set }
}
private3、呼叫copyto方法void
addinfo()
humanvo.copyto(studentvo);
淺拷貝與深拷貝 GCC 4 9編譯通過
深拷貝和淺拷貝的定義可以簡單理解成 如果乙個類擁有資源 堆,或者是其它系統資源 當這個類的物件發生複製過程的時候,這個過程就可以叫做深拷貝,反之物件存在資源,但複製過程並未複製資源的情況視為淺拷貝。淺拷貝資源後在釋放資源的時候會產生資源歸屬不清的情況導致程式執行出錯。ca const ca c 是自...
物件的淺拷貝,包括拷貝物件原型的屬性
const s symbol s 測試物件 const test arr 0,1,2 date new date 1996 03 03 reg new regexp 我是乙個正則 ig err new error 我是乙個錯誤 s 我的key是symbol noenumerable 我是手動設定的不...
淺拷貝 深拷貝
copy mutablecopy copy 不管是可變的,還是不可變的,結果都是不可變的 mutablecopy 不管是不可變的,還是可變的,結果都是可變的 nsmutablestring str nsmutablestring stringwithformat a nsarray arr1 str...