Ответ 1
HashSet - это самое близкое, что вы получите, я думаю.
В идеале, я ищу шаблонный логический класс Set. Он будет иметь все стандартные операции с множеством, такие как Union, Intersection и т.д., И свернуть дублированные элементы.
Я закончил создание своего собственного набора классов на основе С# Dictionary < > - просто используя клавиши.
HashSet - это самое близкое, что вы получите, я думаю.
Лучшая реализация, которую я видел, является частью замечательной коллекции Wintellect Power: http://www.codeplex.com/PowerCollections.
Реализацию набора можно найти здесь:
http://www.codeplex.com/PowerCollections/SourceControl/FileView.aspx?itemId=101886&changeSetId=6259
Он имеет все ожидаемые операции набора (объединение, пересечение и т.д.).
Надеюсь, это поможет!
Нет, в рамках нет ни одного изначально. Существует реализация с открытым исходным кодом, используемая большинством проектов (например, nHibernate), называемая Iesi.Collections. Здесь статья CodeProject об этом:
Вы проверили HashSet в 3.5?
Я не думаю, что у С# есть что-то встроенное, но я знаю, что в сети есть пара реализаций. Есть также хорошие статьи о таких вещах:
Это часть 6 серии по эффективному представлению структуры данных. Эта часть фокусируется на представлении множеств в С#.
Реализация набора коллекции
Реализация заданного класса
Еще одна реализация заданного класса
И наконец...
Я фактически использовал эту библиотеку в качестве основы для реализации, которую я сделал год назад.