16

.NETFxに3つの便利なインターフェイスがあることがわかりました。

  1. IReadOnlyCollection<T>
  2. IReadOnlyList<T>
  3. IReadOnlyDictionary<K,V>

そして、なぜHashSet<T>実装しないのか少し混乱していますIReadOnlyCollection<T>か?何か理由がありますか、それともマイクロソフトはセットをもう一度忘れましたか?

UPD

2時間のグーグルの後、BCLには、プロパティはあるがインターフェイス.Countを実装していないコレクションが多数あることがわかりました。IReadOnlyCollection<T>

UPD2

この投稿http://social.msdn.microsoft.com/Forums/en/netfxbcl/thread/b4fb991a-3f5c-4923-93d4-7cd5c004f859と、ImmoLandwerthによる回答を見つけました。

List<>とDictionary<>以外の他のコレクションは、これらのインターフェイスをサポートするように更新されますか?

絶対。実際、組み込みのコレクションタイプはすべて、すでにIReadOnlyList<>とIReadOnlyDictionary<>を実装しています。つまり、List、T []、またはDictionary <>のインスタンスを、そのIReadOnlyバージョンを取得するAPIに直接渡すことができます。

4

1 に答える 1

16

フレームワークのバージョン4.5では、HashSet<T>を実装していませんIReadOnlyCollection<out T>

この欠落は、フレームワークのバージョン4.6で解決されました(上記の質問が行われてからほぼ12か月後にリリースされました)。

これらの修正は、などの他のコレクションに限定されるものではなくHashSet<T>Stack<T>、これらの改善をQueue<T>受けています。

省略の理由についての憶測は議論の余地があります。それは見落としや時間のプレッシャーかもしれませんが、率直に言って、それはほとんど重要ではありません。関連する逸話を楽しんだとしても、Microsoft開発チームからの直接の入力でさえある程度主観的なものになると思います。

于 2015-07-30T15:53:39.260 に答える