轉殖物件在開發過程中經常會遇到,有些時候需要淺轉殖,有些時候需要深轉殖,具體它們之間有什麼區別,以及實現方式有哪些,在這裡總結一下。
實現深轉殖有以下幾種方法。
**如下:
//手動複製
var user2 = new user
};
**如下:
1擴充套件方法://反射
2var user3 = user1.copy() as user;
1view codepublic
static
class
deepcopyhelper212
//引用型別
13else
1428
else
293233}
34else
if (member.membertype ==system.reflection.membertypes.property)
3545
else
4649}50
51}52}
53}54return
targetdeepcopyobj;55}
56 }
**如下:
1擴充套件方法://序列化
2var user4 = user1.deepclone();
1view code///2
///深轉殖
3///
先序列化再反序列化
4///
5///
6///
7///
8public
static t deepclone(this t obj) where t : class
9
其它還有使用表示式。
總結:手動複製效能最好,但是遇到很複雜的類的時候,工作量很大。
反射和序列化比起來,序列化更簡單。
建立物件的幾種方法
建立自定義物件的最簡單方法就是建立乙個object的例項,再為他新增屬性和方法。1 var people new object 2 people.name yewenxiang 3 people.age 24 4 people.sayname function 還可以使用物件字面量語法建立乙個物件,...
建立mat物件的幾種方法
方法一 使用mat 建構函式,這種方法簡單明瞭,可以為影象開闢記憶體,指定初始值等 mat m 4,4,cv 8uc3,scalar 0,0,255 建立三個通道的影象,並為其定義尺寸 及通道的初始值 方法二 通過建構函式進行初始化 int sz 3 mat l 3,sz,cv 8uc1,scala...
Javascript建立物件的幾種方法
工廠模式 優點 接受引數,可以無數次的呼叫這個函式,建立person物件,而每次他都可以返回乙個包含三個屬性乙個方法的物件。缺點 雖然解決了建立多個相似物件的問題,但是沒有解決物件識別的問題 即怎麼知道乙個物件的型別 建構函式模式 js中可以建立自定義的建構函式,從而定義自定義物件屬性和方法。per...