【发布时间】:2016-01-13 12:10:09
【问题描述】:
我已经阅读了一些关于覆盖 Equal 和 GetHashcode 的内容,但是当我只有一个简单的自己的 Equal 方法时是否需要它?
如果我必须重写它:
这是为什么呢? - 在覆盖 GetHashCode() 时我应该使用 Id.GetHashCode() 吗?
public class Foo {
public Guid Id { get; } = new Guid();
public bool Equal(Foo other) {
if (other == null) return false;
return Id == other.Id;
}
}
【问题讨论】:
-
@Muds 但我上面的代码没有覆盖 Equals?这只是一种新方法?
-
如果没有额外的约定,那么你真的不需要,但我认为没有理由重新发明轮子,特别是因为它不能与所有默认的比较实现结合使用两个实例。
标签: c# overriding