NameValueCollection на самом деле ничего не делает со своим IEqualityComparer? - PullRequest
0 голосов
/ 16 июня 2010

Я смотрю на System.Collections.Specialized.NameValueCollection, и требуется IEqualityComparer, что является хорошей новостью, если кто-то, как я, хочет отсортировать элементы в коллекции, скажем, по алфавиту клавиш.

Но при ближайшем рассмотрении в Reflector я не вижу, чтобы класс NVC действительно где-либо использовал IEqualityComparer.Правильно ли мое наблюдение?Например, я не вижу никакого смысла для IEqualityComparer в перечисляемом объекте, кроме как переупорядочить составляющие его элементы в некотором кардинальном порядке.И я не вижу метода на NVC, который выглядит так, как будто он может захотеть сделать что-то подобное (Sort, Arrange, OrderBy, Aggregate и т.

1 Ответ

1 голос
/ 16 июня 2010

NameValueCollection использует внутреннюю Hashtable для хранения значений.Hashtable использует IEqualityComparer для хеширования и сравнения ключей на равенство.

Также обратите внимание, что IEqualityComparer не выполняет никакого упорядочения, он сравнивает только на равенство (как следует из названия), поэтому он неполезно, если вы хотите отсортировать значений / ключей.

...