2010-09-17 19 views

Répondre

0

Tout d'abord, une liste (List<T>) ne possède pas de "clés". Cependant, un Dictionary<TKey, TValue> fait. Deuxièmement, pour répondre à votre question de performance: non, il ya effectivement une performance pénalité dans le calcul de ce hachage. Cependant, avant de sauter à la conclusion qu'il n'est pas nécessaire, examinez le code environnant et réfléchissez si l'auteur peut avoir réellement besoin du hash de MD5 et non de la chaîne elle-même. Troisièmement, si vous devez chercher quelque chose efficacement, vous pouvez utiliser un HashSet<T> si vous avez juste besoin de vérifier son existence, ou Dictionary<TKey, TValue> si vous devez associer les clés que vous recherchez avec une valeur. Si vous placez des chaînes dans un dictionnaire ou un hashset, C# générera déjà une valeur de hachage à partir de n'importe quelle chaîne que vous insérerez. Cette méthode utilise généralement un algorithme de hachage beaucoup plus rapide que MD5.

0

Je ne pense pas qu'il soit nécessaire de le faire pour un List si le but est d'améliorer les performances. Les chaînes sont des chaînes et sont recherchées de la même manière, qu'elles soient hachées ou non.

1

Je ne vais pas supposer savoir ce que les auteurs du code que vous visualisiez faisaient avec leur liste. Mais je dirai que si vous avez une grande liste et la performance de la recherche est critique, alors il y a une classe pour cela. HashSet<T> répondra à vos besoins bien.