Почему TreeSet <T>является внутренним типом в .NET? - PullRequest
8 голосов
/ 16 марта 2010

Итак, я просто копался в Reflector, пытаясь найти детали реализации HashSet (из чистого любопытства, основанного на ответе на другой вопрос здесь) и заметил следующее:

internal class TreeSet<T> : ICollection<T>, IEnumerable<T>, ICollection,
    IEnumerable, ISerializable, IDeserializationCallback

Не слишком углубляясь в детали, оно выглядит как самобалансирующееся дерево двоичного поиска.

У меня вопрос, есть ли кто-нибудь, кто понимает, почему этот класс internal? Это просто потому, что другие типы коллекций используют его внутренне и скрывают сложности BST от общих масс ... или я далеко от базы?

1 Ответ

10 голосов
/ 16 марта 2010

Публичное раскрытие типа включает в себя гораздо больше работы, чем просто внутреннее раскрытие - это означает, что вы должны быть абсолютно уверены, что не хотите вносить существенные изменения в API позже, вам нужно документировать его тщательно и т. д.

Я бы не удивился, обнаружив TreeSet<T> в следующем выпуске, но для MS имеет смысл быть осторожным, прежде чем что-то публиковать.

(я считаю, что SortedSet<T> в .NET 4 - это, по сути, древовидный набор, кстати.)

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