我有两个类似这样的对象:
class Container {
public HashSet<Item> Items { get; }
}
class Item {
public Container Parent { get; set; }
public string Value1 { get; set; }
public int Value2 { get; set; }
}
每个Item
实例都必须属于一个Container
实例,并且两者之间存在一对多的关系,并且两端始终保持同步。
我现在面临实现一个方法来比较两个实例Item
以查看它们Value1
和Value2
值是否匹配。该方法不会考虑该Parent
值,因为我比较的每对实例在该值上肯定不同,因此这样做会使我正在实现的方法无用,因为它会具有与false
该方法相同的结果 () object.ReferenceEquals
。
我的问题如下。我应该将此方法实现为对象的public override bool Equals( object obj )
方法(连同GetHashCode
)吗?还是它忽略了它的Parent
属性这一事实阻止了我这样做?为什么或者为什么不?我的另一个想法是只实现它,public bool EqualsIgnoreParent( Item other )
它不会覆盖任何东西;然后我可以从自定义比较器中调用它。