我打算在一个比较密集的代码中使用KeyValuePair,并且很困惑地检查它是如何在.NET (s. )中实现的。为什么它不为了效率而覆盖Equals和GetHashCode (而不是实现==),而是使用基于缓慢反射的默认实现?我知道structs/value类型有一个基于对其GetHashCode()和Equals(
我发现我自己经常重写Equals()和GetHashCode(),以实现具有相同属性值的业务对象是相等的语义。这导致编写重复的代码和维护脆弱的代码(属性被添加,一个/两个重写都没有更新)。代码最后看起来像这样(欢迎对实现的评论):{
if (object.ReferenceEquals(this,0 : MyContainedClass
可能重复:
public class Person public string Name { get; set; } public IList<Person> Relatives { get; set; }我想比较一下人的两个例子,看看它们是否相等。当然,我会比较Name、DateOfBirth和Relatives集合,看看它们是否相等。但是,这需要我重写每个POCO