我覆蓋了我的類的Equals()以比較類型爲Guid的ID值。警告:「...覆蓋Object.Equals(對象o),但不覆蓋Object.GetHashCode()」
然後Visual Studio中警告說:
...重寫Object.Equals(對象o),但 不重寫Object.GetHashCode()
所以我隨後也推翻它的GetHashCode( )像這樣:
public partial class SomeClass
{
public override bool Equals(Object obj)
{
//Check for null and compare run-time types.
if (obj == null || this.GetType() != obj.GetType()) return false;
return this.Id == ((SomeClass)obj).Id;
}
public override int GetHashCode()
{
return this.Id.GetHashCode();
}
}
它似乎工作。 我做得對嗎?記得Id是Guid類型的。 我的課是一個實體框架對象嗎?
什麼時候子類實例會等於基類實例?該子類將具有其他屬性,並且基類在執行比較時不會了解它們。 –
'Equals'目前僅用於處理所有子類將擁有的'Id'。 – recursive
我承認你的邏輯,但正如我在對Eric的評論中指出的,OP的Equals代碼直接來自[官方MSDN文檔]示例(http://msdn.microsoft.com/en-us/庫/ bsc2ak47(v = vs.110)的.aspx)。 (請參閱Point類示例)。 – kmote