因特網上有很多關於如何在Equals被覆蓋時覆蓋GetHashCode()的信息。但是,所有這些例子都是關於包含幾個可以生成散列的字段的類。 我試圖找到的是我用於所有業務邏輯層對象的基類的一個很好的GetHashCode實現。這個類,稱爲BusinessLogica,包含一個toString()實現,爲我的框架,一些基本的功能和以下的Equals重寫:如何覆蓋通用BaseClass中的GetHashCode
public override bool Equals(object obj)
{
bool retValue;
if (obj is BusinessLogica && this.GetType() == obj.GetType())
{
retValue = this.ID == ((BusinessLogica)obj).ID;
}
else
{
retValue = false;
}
return retValue;
}
現在,我做了什麼,到目前爲止是當我需要擴展此對象BusinessLogica和我用作字典中的鍵的重寫,我在此特定類中重寫GetHashCode並返回ID。 我也可以在BusinessLogica基類中使用此實現。這是'安全'嗎?我還看到了返回ToString(),GetHashCode()的例子。
什麼是明智的使用?或者是這個級別的GetHashCode不可用,我是否應該在每個BusinessLogica類中覆蓋它?