2010-09-17 31 views

回答

0

首先,列表(List<T>)沒有「鍵」。但是,Dictionary<TKey, TValue>呢。

其次,爲了回答你的表現問題:不,實際上在計算散列時存在性能懲罰。但是,在您跳到不必要的結論之前,請檢查周圍的代碼,並考慮作者是否真的需要MD5哈希表而不是字符串本身?第三,如果您需要高效地查找某些內容,則可以使用HashSet<T>(如果您只需檢查它的存在);如果需要將您查找的鍵與值相關聯,則可以使用Dictionary<TKey, TValue>()。

如果將字符串放在字典或散列集中,C#將從您放入的任何字符串中生成散列值。這通常使用比MD5快得多的散列算法。

0

如果目標是提高性能,我認爲不需要爲List這樣做。字符串是字符串,並且以相同的方式查看它們是否被散列。

1

我不會假設您知道您查看的代碼的作者是在用他們的列表進行操作。但是我會說,如果你有一個很大的名單,搜索的性能很關鍵,那麼這裏有一個類。 HashSet<T>將很好地滿足您的需求。