Почему HashSet, но не установлен в C #?

Старый вопрос

Я понимаю, что C # имеет в некотором смыслеHashSet а такжеset типы. Я понимаю чтоHashSet является. Но почемуset это отдельное слово? Почему не каждый наборHashSet<Object>?

Новый вопрос

Почему у C # нет универсальногоSet тип, похожий наDictionary тип? С моей точки зрения, я хотел бы иметь набор со стандартной производительностью поиска / добавления / удаления. Мне было бы все равно, реализовано ли это с помощью хэшей или как-то еще. Так почему бы не создать набор классов, который на самом деле был бы реализован какHashSet в этой версии C #, но, возможно, в будущей версии несколько иначе?

Или почему бы не по крайней мере интерфейсISet?

Отве

Спасибо всем, кто ответил ниже:ICollection реализует многое из того, что вы ожидаете отISet. С моей точки зрения, хотя,ICollection реализуетIEnumerable while наборы не должны быть перечисляемыми --- пример: набор действительных чисел от 1 до 2 (даже больше, наборы могут генерироваться динамически). Я согласен, что это небольшая разглагольствование, поскольку «нормальным программистам» редко нужны бесчисленные множества.

Ладно, думаю, я понял.HashSet должен был называтьсяSet но словоSet зарезервирован в некотором смысле. В частности, создатели архитектуры .NET хотели иметь согласованный набор (sic!) Классов для разных языков. Это означает, что каждое имя стандартного класса не должно совпадать ни с одним ключевым словом в языках .NET. СловоSet, однако, используется в VB.NET, который фактически нечувствителен к регистру (не так ли?), поэтому, к сожалению, там нет места для маневра.

Тайна разгадана

Эпилог

Новый ответ Алексея Юрьевича ссылается на MSDN страница который описывает предстоящий интерфейс .NET 4.0ISet который ведет себя так, как я думал, и должен быть реализованHashedSet. Счастливый конец

Ответы на вопрос(7)

Ваш ответ на вопрос