下面是一個覆蓋Object.Equals()的示例實現,用於應用程序中所有其他實體從中派生的實體基類。實體類的GetHashCode()的正確實現是什麼?
所有的實體類都有屬性Id,它是一個可爲空的int。 (這是無論什麼表的實體類對應的主鍵。)
public override bool Equals(object obj)
{
if (obj == null || GetType() != obj.GetType())
return false;
if (base.Equals(obj))
return true;
return Id.HasValue && ((EntityBase) obj).Id.HasValue &&
Id.Value == ((EntityBase) obj).Id.Value;
}
鑑於此實現equals()方法中,你如何正確地實現GetHashCode()方法?
對於記錄來說,對於一個ID有一個可爲空的int是一個可怕的想法。 ID應該幾乎總是GUID,絕對不能爲空。 – 2014-08-28 15:52:18