C# 对象重复比较

2个月前 阅读 96 评论 0 赞 0

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/u014467089/article/details/80136178

上篇文章《C#之相等比较(常规比较)》写了C#中比较是否相等的常规方法的使用说明,但是在实际开发中,往往也会用到两个引用类型的对象进行比较,而引用类型中有包含引用类型的属性或字段。
例如: 有一个引用类型TestClass,TestClass中同时包含值类型(int)的属性和引用类型属性(ExClass),引用类型的属性中又包含了引用类型的属性(ExClass2)。

  1. public class TestClass
  2. {
  3. public int ID { get; set; }
  4. public string Name { get; set; }
  5. public ExClass OtherCalss { get; set; }
  6. }
  7. public class ExClass
  8. {
  9. public string Param1 { get; set; }
  10. public ExClass2 OtherCalss2 { get; set; }
  11. }
  12. public class ExClass2
  13. {
  14. public string P1 { get; set; }
  15. public string P2 { get; set; }
  16. }

这个时候,如果有两个TestClass的实例,c1 ,c2

  1. static void Main(string[] args)
  2. {
  3. TestClass c1 = new TestClass();
  4. TestClass c2 = new TestClass();
  5. }

假设:c1,c2各自经过不同的操作进行了赋值,现在怎么比较c1和c2包含的属性值是否相等???

以上问题是C#提供的常规方法实现不了的(如果有,请各位大牛留言告知,感激不尽……

因此,我就想办法自己写了一个比较的方法,称之为“深度比较”,就是比较c1和c2所有属性值是否相等,包括属性值的属性值

  1. -

除了属性值的比较,还可以比较字段值是否相等,原理相同,完整的测试代码在git上有,
地址:https://github.com/PandaCuipp/ObjectCompares

另外:网上有一种方法,是将c1、c2分别 二进制序列化后比较md5值,不知是否可行,还未试验(已验证,代码已更新到上面的git中)

你的支持将鼓励作者继续创作

评论(0)

(无)