我讀過一些關於重寫Equal和GetHashcode的內容,但是當我擁有一個像下面這樣簡單的自己的Equal方法時,我需要它嗎?我是否需要重寫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但我上面的代碼不覆蓋等於?這只是一種新方法? – MrProgram
如果沒有其他約定,那麼您並不需要,但我沒有看到重新發明輪子的理由,因爲它不會與所有比較兩個實例的默認實現結合使用。 – dryman