日期:2014-05-17  浏览次数:21236 次

c# 两个对象属性值比较
A a=new A(){name="jack",age=2}
A b=new A(){name="Tom",age=3}

如何去比较 对象属性的值呢?
而且我对象的属性有几十个


求解! 谢谢!

------解决方案--------------------
办法有很多,比如一个一个比较,或者反射。

如果你觉得前者写得麻烦,后者性能太低,可以来点元编程。

http://bbs.csdn.net/topics/390600500

这个是属性复制,你要的是属性的比较,这个你自己举一反三了。

之前我说了,对象是否相等应该让对象的定义者去实现,这有什么好处呢?很显然,这样做很适合递归,看这个场景:
class Department
{
    public People Leader { get; set; }
    ...
}

class People
{
    public string Name { get; set; }
    public int Age { get; set; }
}

现在的问题是怎么比较Department
如果每个类自己管好自己的比较,那么很简单,否则作为最顶层的Department,必须知道如何判断People如何比较(名字年龄一致就算一个人了么?)。设想,在很复杂的类聚合关系中,你将这种比较的代码写在一起,就违反了单一职责原则。