3 回答

TA貢獻(xiàn)1821條經(jīng)驗(yàn) 獲得超6個(gè)贊
MSDN說(shuō):
哈希碼是一個(gè)數(shù)值,用于在相等性測(cè)試期間標(biāo)識(shí)對(duì)象。它也可以用作集合中對(duì)象的索引。
GetHashCode方法適用于哈希算法和數(shù)據(jù)結(jié)構(gòu)(例如哈希表)。
GetHashCode方法的默認(rèn)實(shí)現(xiàn)不能保證不同對(duì)象的唯一返回值。此外,.NET Framework不保證GetHashCode方法的默認(rèn)實(shí)現(xiàn),并且它返回的值在.NET Framework的不同版本之間將相同。因此,此方法的默認(rèn)實(shí)現(xiàn)不得用作哈希目的的唯一對(duì)象標(biāo)識(shí)符。
GetHashCode方法可以被派生類(lèi)型覆蓋。值類(lèi)型必須重寫(xiě)此方法,以提供適用于該類(lèi)型的哈希函數(shù)并在哈希表中提供有用的分布。為了唯一,哈希碼必須基于實(shí)例字段或?qū)傩缘闹?,而不是靜態(tài)字段或?qū)傩浴?/p>
在Hashtable對(duì)象中用作鍵的對(duì)象還必須重寫(xiě)GetHashCode方法,因?yàn)檫@些對(duì)象必須生成自己的哈希碼。如果用作鍵的對(duì)象不能提供GetHashCode的有用實(shí)現(xiàn),則可以在構(gòu)造Hashtable對(duì)象時(shí)指定哈希碼提供程序。在.NET Framework 2.0版之前,哈希碼提供程序基于System.Collections.IHashCodeProvider接口。從2.0版開(kāi)始,哈希碼提供程序基于System.Collections.IEqualityComparer接口。
基本上,存在哈希碼以使哈希表成為可能。
保證兩個(gè)相等的對(duì)象具有相等的哈希碼。不保證
兩個(gè)不相等的對(duì)象具有不相等的哈希碼(稱(chēng)為沖突)。

TA貢獻(xiàn)2080條經(jīng)驗(yàn) 獲得超4個(gè)贊
GetHashCode()
用于幫助支持將對(duì)象用作哈希表的鍵。(Java等中也存在類(lèi)似的東西)。目標(biāo)是讓每個(gè)對(duì)象都返回不同的哈希碼,但這通常不能絕對(duì)保證。這是必需的,雖然這兩個(gè)邏輯上相等的對(duì)象返回相同的散列碼。
典型的哈希表實(shí)現(xiàn)從hashCode值開(kāi)始,采用模數(shù)(因此將值限制在一個(gè)范圍內(nèi)),并將其用作“存儲(chǔ)桶”數(shù)組的索引。
- 3 回答
- 0 關(guān)注
- 515 瀏覽
添加回答
舉報(bào)