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如何比较(名字年龄一致就算一个人了么?)。设想,在很复杂的类聚合关系中,你将这种比较的代码写在一起,就违反了单一职责原则。