Ответ 1
HashSet<T>
в .NET 3.5
Существует ли общий контейнер, реализующий поведение "set" в .NET?
Я знаю, что могу просто использовать Dictionary<T, Object>
(и, возможно, добавить nulls
как значения), потому что его клавиши действуют как набор, но мне было любопытно, есть ли что-то готовое.
HashSet<T>
в .NET 3.5
Я использую Iesi.Collections. пространство имен, которое поставляется с NHibernate (docs здесь) - возможно, стоит подумать, если вы находитесь в .NET < 3.5
Представлено в .NET 3.5: HashSet<T>
(см. ниже).
Представлен в .NET 4.0: ISet<T>
:
Предоставляет базовый интерфейс для абстракции множеств. Эта интерфейс предоставляет методы для реализации наборов, которые коллекции, которые имеют уникальные элементы и конкретные операции.
Интерфейс имеет две реализации в .NET 4+ BCL:
... обеспечивает высокую производительность. Набор представляет собой набор, который не содержит повторяющихся элементов и элементы которых отсутствуют особый порядок
Представляет коллекцию объектов, которые хранятся в отсортированном порядке. SortedSet (Of T) поддерживает отсортированный порядок по мере добавления элементов и удаляется без ущерба для производительности. Дублирующиеся элементы не допускается.
FWIW: там также internal
class TreeSet<T>: SortedSet<T>
в пространстве имен System.Collections.Generic
.
Его единственной целью, по-видимому, является использование в SortedDictionary<TKey, TValue>
.