說明:
本文使用vs2010,c#
對於任意物件,任意型別進行深度值比較
1. deepvaluecomparearray
需要對array中每乙個item進行深度值比較(deepvaluecompare)。
private static bool deepvaluecomparearray(array srcarray, array comparedarray)
for (int i = 0; i < srcarray.length; i++)
}return true;
}
2. deepvaluecomparegenerictype
對於list,dictionary型別,也是對每乙個item進行深度值比較(deepvaluecompare)。
private static bool deepvaluecomparegenerictype(object src, object compared)
for (int i = 0; i < srclist.count; i++)
}return true;
}catch (exception)
foreach (object o in srcdictionary.keys)
}return true;
}catch (exception)
}}
3. deepvaluecompare
入口函式,兩個引數,兩個要比較的物件。
採用遞迴,**比較簡單,直接上**:
public static bool deepvaluecompare(object srcobj , object comparetoobj)
if (srcobj == null || comparetoobj == null)
type srctype = srcobj.gettype();
type comparetotype = comparetoobj.gettype();
if (srctype != comparetotype)
if (srctype.isvaluetype)
if (srctype.isarray)
else if (srctype.isgenerictype || srctype.fullname == "system.collections.hashtable")
else if (srcobj is icomparable)
else
}else if (member.membertype == membertypes.property)}}
}return true;
}
js進行物件深度拷貝deep clone
推薦 操作新穎,逆向思維 轉成json字串 在將字串轉為物件 obj1 let obj3 json.parse json.stringify obj1 obj1.a 4 obj1.b.c 4 log json.stringify obj3 慎用lodash的clonedeep函式 文中還是推薦方法一...
C 物件深度轉殖
有基礎的開發者都應該很明白,物件是乙個引用型別,例如 object b new object object a b 那麼a指向的是b的位址,這樣在有些時候就會造成如果修改a的值,那麼b的值也會跟隨著改變 a和b是同乙個引用記憶體位址 我們想要a和b都是各自互不影響的,那麼只能是完全地新建乙個新的物件...
深度探索C 物件模型
傳世經典書叢 深度探索c 物件模型 美 stanley b.lippman 斯坦利 b.李普曼 著 侯捷 譯 isbn978 7 121 14952 8 2012年1月出版 定價 69.00元 16開 356頁 宣傳語 如果你是一位c 程式設計師,渴望對於底層知識獲得乙個完整的了解,那麼本書正適合你...