答案 0 :(得分:4)
简单地说,你不能......除非对象已经实现了Equals
方法:-)没有神奇的仙女可以比较.NET中的对象。
从技术上讲,还有第三种方式......它完全违背你的字面意思,但通常被认为是“可接受的”:写一个T4模板,使用反射,生成一个包含比较器的.cs文件(使用手动属性比较来比较对象)。 T4在编译时运行,生成的.cs在编译时生成(并编译),因此在运行时没有反射,并且没有“人工书写”手动属性比较。
请注意,正确执行此T4模板非常复杂......它是项目中的项目!
有很多方法可以做到这一点,每个方法都有其缺陷。只是决定要比较什么(字段或属性)就足够了。对于字段/属性,您是否希望将所有内容与一个选项进行比较以排除某些内容,或者没有任何选项可以包含您真正想要比较的内容?然后决定如何处理集合(你想比较它们的元素吗?)。许多决定要采取!
答案 1 :(得分:2)
正如xanatos上面所说,你不能,但有bunch of widgets已经为你做了这个。