我有一個覆蓋Equals()
方法的結構和編譯器抱怨GetHashCode()
沒有被覆蓋。如何在C#結構實現GetHashCode()方法
我的結構:
private struct Key
{
...
public override int GetHashCode()
{
return ?;
}
public int FolderID;
public MyEnum SubItemKind;
public int SubItemID;
}
什麼是實現GetHashCode()
方法的正確方法?
一個)
return FolderID^SubItemKind.GetHashCode()^SubItemID;
,或者b)
return FolderID.GetHashCode()^SubItemKind.GetHashCode()^SubItemID.GetHashCode();
'System.Int32.GetHashCode()'執行簡單的'返回this'(至少在mscorlib程序V4),所以你的兩段代碼就相當於反正。 –
這個問題是不特定於'struct'。問題的核心是多哈希碼組合成一個,這是在上回答了「什麼是一個重寫System.Object.GetHashCode最好的算法?」解釋題。 – dasblinkenlight