为什么TreeSet <T>是.NET中的内部类型?

Jus*_*ner 8 .net generics collections binary-tree

所以,我只是在Reflector周围试图找到HashSet的实现细节(基于这里的另一个问题的答案纯粹的好奇心)并注意到以下内容:

internal class TreeSet<T> : ICollection<T>, IEnumerable<T>, ICollection,
    IEnumerable, ISerializable, IDeserializationCallback
Run Code Online (Sandbox Code Playgroud)

在不深入细节的情况下,它看起来像一个自平衡二进制搜索树.

我的问题是,有没有人知道为什么这堂课internal?仅仅因为其他集合类型在内部使用它并隐藏了BST与普通群众的复杂性......还是我离开了基地?

Jon*_*eet 10

公开暴露一种类型涉及的工作多于仅在内部公开它 - 这意味着你必须绝对确定你以后不想对API做出重大改变,你必须彻底记录它等等.

TreeSet<T>在未来的版本中找到一个暴露,我不会感到惊讶,但是在公开宣传之前让MS谨慎是有道理的.

(我相信SortedSet<T>在.NET 4中基本上是一个树集,顺便说一下.)

  • 当您想知道将此功能公开时实际需要多少Microsoft员工时,请阅读以下文章:http://blogs.msdn.com/ericlippert/archive/2003/10/28/53298.aspx (2认同)