代码之家  ›  专栏  ›  技术社区  ›  Justin Niessner

为什么treeset<t>是.NET中的内部类型?

  •  8
  • Justin Niessner  · 技术社区  · 15 年前

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

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

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

    我的问题是,有没有人知道为什么要上这个课 internal ?这仅仅是因为其他集合类型在内部使用它,并将BST的复杂性隐藏起来,不让普通人看到……还是我离基地很远?

    1 回复  |  直到 15 年前
        1
  •  10
  •   Jon Skeet    15 年前

    公开一个类型需要做的工作要比只在内部公开要多得多——这意味着你必须绝对确信以后你不想对API做重大的更改,你必须彻底地记录它等等。

    我不会惊讶地发现 TreeSet<T> 在未来的发行版中曝光,但对于微软来说,在公开之前保持谨慎是有道理的。

    (我相信 SortedSet<T> 在.NET 4中,基本上是树集(btw)。