古い質問
私の理解では、C# には何らかの意味HashSetとset型があります。私は何を理解していHashSetます。しかし、なぜset別の単語なのですか?すべてのセットが ではないのはなぜHashSet<Object>ですか?
新しい質問
Set型と同様に、C# にジェネリック型がないのはなぜDictionaryですか? 私としては、検索・追加・削除の性能が標準的なセットが欲しいところです。それがハッシュで実現されているか、他の何かで実現されているかはあまり気にしません。では、実際にHashSetはこのバージョンの C# では として実装されるが、将来のバージョンでは多少異なるセット クラスを作成してみませんか?
または、少なくともインターフェースではないのはなぜISetですか?
答え
以下に回答してくれたすべての人に感謝しICollectionますISet。ただし、私の観点からは、セットが列挙可能である必要はありませんが、ICollection実装IEnumerableします --- 例: 1 と 2 の間の実数のセット (さらに、セットは動的に生成できます)。「普通のプログラマー」が無数のセットを必要とすることはめったにないので、これはマイナーな暴言であることに同意します。
わかりました、私はそれを理解したと思います。HashSetは絶対に呼び出されることを意図していましSetたが、この単語Setはある意味で予約されています。より具体的には、.NET アーキテクチャの作成者は、さまざまな言語に対して一貫性のある (原文のまま!) クラスのセットを持ちたいと考えていました。これは、標準クラスのすべての名前が .NET 言語のキーワードと一致してはならないことを意味します。ただし、という単語Setは、実際には大文字と小文字を区別しない VB.NET で使用されているため (そうですか?)、残念ながらそこには操作の余地がありません。
謎が解けました:)
エピローグ
Alex Y. による新しい回答は、次の .NET 4.0 インターフェイスについて説明しているMSDN ページへのリンクISetですHashedSet。ハッピーエンド。