Why is TreeSet<T> an internal type in .NET?
.net, binary-tree, collections, generics
Solution
Exposing a type publicly involves a lot more work than only exposing it internally - it means you've got to be absolutely sure that you don't want to make significant changes to the API later, you've got to document it thoroughly etc.
I wouldn't be surprised to find a `TreeSet<T>` exposed in a future release, but it makes sense for MS to be cautious before making something public.
(I believe that `SortedSet<T>` in .NET 4 is basically a tree set, btw.)
Problem
So, I was just digging around Reflector trying to find the implementation details of HashSet (out of sheer curiosity based on the answer to another question here) and noticed the following: ``` internal class TreeSet<T> : ICollection<T>, IEnumerable<T>, ICollection, IEnumerable, ISerializable, IDeserializationCallback ``` Without looking too deep into the details, it looks like a Self-Balancing Binary Search Tree. My question is, is there anybody out there with the insight as to why this class is `internal`? Is it simply because the other collection types use it internally and hide the complexities of a BST from the general masses...or am I way off base?