Так, я просто рыл вокруг Отражателя, пытающегося найти детали реализации HashSet (из чистого любопытства на основе ответа на другой вопрос здесь), и заметил следующее:
internal class TreeSet<T> : ICollection<T>, IEnumerable<T>, ICollection,
IEnumerable, ISerializable, IDeserializationCallback
Не изучая слишком глубоко детали, это похоже на Самоуравновешивающееся Дерево двоичного поиска.
Мой вопрос, там кто-либо там с пониманием относительно того, почему этот класс internal
? Это просто, потому что другие типы набора используют его внутренне и скрывают сложности BST от общих масс..., или я путь от основы?
Публичное раскрытие типа требует гораздо больше работы, чем только его внутреннее раскрытие - это означает, что вы должны быть абсолютно уверены, что не хотите внесите значительные изменения в API позже, вы должны тщательно его задокументировать и т. д.
Я не удивлюсь, если обнаружу TreeSet
, представленный в следующем выпуске, но это имеет смысл для MS быть осторожным, прежде чем делать что-то публичное.
(Я считаю, что SortedSet
в .NET 4 в основном представляет собой древовидный набор, кстати.)