Dot-Net

為什麼 TreeSet<T> 是 .NET 中的內部類型?

  • May 8, 2010

所以,我只是在 Reflector 周圍探勘,試圖找到 HashSet 的實現細節(出於對另一個問題的回答的純粹好奇),並註意到以下內容:

internal class TreeSet&lt;T&gt; : ICollection&lt;T&gt;, IEnumerable&lt;T&gt;, ICollection,
   IEnumerable, ISerializable, IDeserializationCallback

無需深入細節,它看起來就像一個自平衡二叉搜尋樹。

我的問題是,有沒有人知道為什麼這門課是這樣的internal?僅僅是因為其他集合類型在內部使用它並向大眾隱藏了 BST 的複雜性……還是我離譜?

公開一個類型比只在內部公開它涉及更多的工作——這意味著你必須絕對確定你以後不想對 API 進行重大更改,你必須徹底記錄它等等。

在未來的版本中發現一個暴露我不會感到驚訝TreeSet&lt;T&gt;,但對於 MS 在公開某些內容之前保持謹慎是有道理的。

(我相信SortedSet&lt;T&gt;在 .NET 4 中基本上是一個樹集,順便說一句。)

引用自:https://stackoverflow.com/questions/2455352