2010-06-16 2 views
0

Je regarde System.Collections.Specialized.NameValueCollection et il faut un IEqualityComparer, ce qui est une bonne nouvelle si quelqu'un comme moi voulait trier les articles dans la collection, disons quelque chose comme l'ordre alphabétique des touches.NameValueCollection ne fait réellement rien avec son IEqualityComparer?

Mais, à regarder de plus près dans Reflector, je ne vois pas la classe NVC réellement en utilisant le IEqualityComparer n'importe où. Est-ce que mon observation est correcte? Comme dans, je ne vois aucune utilisation pour un IEqualityComparer dans une entité énumérable autre que de réarranger ses éléments constituants sur un certain ordre cardinal. Et je ne vois pas de méthode sur NVC qui semble vouloir faire quelque chose de ce genre (Sort, Arrange, OrderBy, Aggregate, etc.).

Répondre

1

NameValueCollection utilise un Hashtable en interne pour stocker les valeurs. Le Hashtable utilise le IEqualityComparer pour hacher et comparer les clés pour l'égalité.

Notez également que IEqualityComparer ne fait pas d'ordre, il se compare uniquement pour l'égalité (comme son nom l'indique) il est donc pas utile si vous voulez sorte valeurs/clés.