Что-то вроде IDictionary <TKey, TValue>, но только для ключей (значение не требуется) в .NET? - PullRequest
3 голосов
/ 08 февраля 2011

Есть ли в .Net что-то, что позволяет хранить / получать / содержать ключи без значений?
Я могу использовать Dictionary<string, string> и всегда хранить String.Empty в качестве значения, но, может быть, есть какое-то лучшее решение?

Ответы [ 5 ]

11 голосов
/ 08 февраля 2011

Вы можете использовать класс HashSet<T>, он предназначен для хранения различных значений в наборе.

Основное различие между этим и IDictionary{TKey, TValue} (не считая того факта, что оно не хранит значения) заключается в том, что вы можете добавить то же значение к HashSet<T> и, если оно уже существует он не генерирует исключение (когда вы пытаетесь вызвать Add метод для него, в отличие от Add метода для IDictionary{TKey, TValue}, который выбрасывает ArgumentException если элемент уже существует в словаре.

3 голосов
/ 08 февраля 2011

Попробуйте Hashset<T>, если вы используете .NET 3.5 или выше.

1 голос
/ 08 февраля 2011

Вы, вероятно, ищете System.Collections.Generic.HashSet

Вот соответствующая выдержка из MSDN:

Класс HashSet обеспечивает высокопроизводительные операции над множествами. Множество это коллекция, которая не содержит дубликаты элементов и чьи элементы в произвольном порядке.

Емкость объекта HashSet равна количество элементов этого объекта может держать. Объект HashSet емкость автоматически увеличивается по мере элементы добавляются к объекту.

Начиная с .NET Framework версия 4, класс HashSet реализует интерфейс ISet .

1 голос
/ 08 февраля 2011

Если вы используете .NET 3.5, вы можете использовать класс HashSet.Если нет, то вам нужно создать свой собственный универсальный класс (возможно, наследовать от List<> и выполнить проверки).

0 голосов
/ 08 февраля 2011

List<T> имеет Содержит метод , чтобы проверить, существует ли определенный элемент в списке, но HashSet, как другие предполагают, будет работать и, вероятно, быстрее, поскольку он не может содержать дубликаты.List<T> может иметь повторяющиеся значения.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...