我有兩個對象具有這些定義兩個對象的平等:比較基於字典
public static Dictionary<string, Container> cont1 = new Dictionary<string, Container>();
public static Dictionary<string, Container> cont2 = new Dictionary<string, Container>();
容器類的模式是如下:
public class Container
{
public string IDx { get; set; }
public string IDy { get; set; }
public string Name { get; set; }
public Dictionary<string, Sub> Subs = new Dictionary<string, Sub>();
}
public class Sub
{
public string Namex { get; set; }
public string Namey { get; set; }
public string Value { get; set; }
public Dictionary<string, string> Paths { get; set; }
}
我的問題是:我如何深入檢查 cont1和cont2的權益?我的意思是,每個成員和價值都相等,甚至在子對象內部也是如此。
在這種情況下,在c#中是否有任何功能,或者我必須編寫自定義方法來根據對象的結構自己檢查相等性;
第二個問題:我能避免的平等問題,如果我可以創建產品的兩個不同的副本;我的意思是說我們有一個基礎Container對象的所有成員和值,然後創建兩個單獨的副本容器,即CONT1和CONT2這CONT1改變的值不會在CONT2改變同樣價值的。
注1:該方法用於克隆不工作:
cont2 = new Dictionary<string, Container>(cont1);
注2:大多數在其他的答案所提出的方法都是基於一個水平字典(使用用於檢查環或LINQ)而當我們在對象中擁有屬性和字典對象(具有它們自己的屬性)時不會出現這種情況。
'我的問題是:我如何能深入檢查CONT1和cont2'的股權 - 這是否意味着兩個字典具有相同的密鑰。並且每個鍵的值都具有相同的「容器」的確切*值*或相同的確切*實例*? – Jamiec
當然,你必須編寫一個自定義方法來根據對象的結構來檢查相等性。但是你甚至不明白你的理解是否平等。另外,不要一次提出多個問題。 –
他們可能有不同的鍵和值,這就是重點;檢查它們是否具有完全相同的密鑰,具有相同值的屬性 – wiki