C 對於任意物件進行深度值比較

2021-06-12 20:24:52 字數 1401 閱讀 9362

說明:

本文使用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 程式設計師,渴望對於底層知識獲得乙個完整的了解,那麼本書正適合你...