Justin Niessner
Justin Niessner

Reputation: 245479

Why is TreeSet<T> an internal type in .NET?

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?

Upvotes: 8

Views: 2857

Answers (1)

Jon Skeet
Jon Skeet

Reputation: 1503180

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.)

Upvotes: 11

Related Questions