【发布时间】:2016-09-07 22:15:39
【问题描述】:
我有两个具有这些定义的对象:
public static Dictionary<string, Container> cont1 = new Dictionary<string, Container>();
public static Dictionary<string, Container> cont2 = new Dictionary<string, Container>();
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 的权益?我的意思是每个成员的平等性和价值,甚至在 Subs 对象的深处;
c#中是否有针对这种情况的任何功能,或者我必须自己编写一个自定义方法来根据对象的结构检查相等性;
第二个问题:如果我可以创建两个不同的 Products 副本,我可以避免相等问题;我的意思是说我们有一个包含所有成员和值的基本 Container 对象,然后创建 Container 的两个单独的副本,即 cont1 和 cont2,它们更改 cont1 中的值不会更改 cont2 中的相同值。
注意1:此克隆方法无效:
cont2 = new Dictionary<string, Container>(cont1);
注意2:其他答案中建议的大多数方法都基于单级字典(使用循环或 LINQ 进行检查),而不是当我们有属性和字典对象(具有它们自己的属性)在对象中。
【问题讨论】:
-
My question is: How can I deep check the equity of cont1 and cont2- 这是否意味着两个字典具有相同的键。并且每个键的值具有完全相同的 values 或完全相同的Container? 的 instances -
当然,您必须自己编写一个自定义方法来根据对象的结构检查相等性。但它甚至不清楚你理解为平等。另外,不要一次问多个问题。
-
它们可能有不同的键和值,这就是重点;检查它们是否具有完全相同的键、具有相同值的属性
-
@wiki:您是否需要知道它们是否相等,或者哪些在另一个中?
-
没有;我只需要知道它们是否完全相等;差异并不重要
标签: c# object dictionary clone equality