2012-09-07 44 views
0

當我檢查一個項目(我的公司代碼)。我看到這個:爲什麼在C#中使用Connection.GetHashCode?

public override int GetHashCode() 
{ 
    unchecked 
    { 
     int result = 17; 
     result = result * 23 + ((connection != null) ? this.connection.GetHashCode() : 0); 
     return result; 
    } 
} 

其實,我第一次見到GetHashCode()。我跑了一點。但我不明白他們爲什麼在代碼行和連接中使用它?

有沒有特別的原因?使用getHashCode進行連接的邏輯是什麼?

謝謝。

+0

幻數的目的是什麼?看起來他們完全沒有意義。 – Alex

+0

http://vkreynin.wordpress.com/2008/07/05/explaining-gethashcode-method/ –

回答

1

即GetHashCode的可以用來快速識別兩個實例是否看起來是「相同的」(不同哈希碼=不同實例;相同散列碼可能意味着相同的實例)。

顯然,「連接」字段在決定您的對象的身份是重要的。

2

如果您知道生成對象的快速分佈式散列鍵的好方法,應該使用GetHashCode。

當您想要將對象存儲在字典等中時,這非常有用。更好的散列意味着更好的數據結構效率。

否則使用基本的GetHashCode()。在很多情況下,這是次優的。有關使用GetHasCode覆蓋與Equals覆蓋相結合的一些細節,請參閱;

http://msdn.microsoft.com/en-us/library/ms173147(v=vs.80).aspx