2

IDictioary<TKey, TValue>.ValuesプロパティがICollection<TValue>ではなくタイプである理由に頭を悩ませようとしていIEnumerable<TValue>ます。プロパティの .NET 実装はValues、インターフェイス プロパティを明示的に実装し、値を追加または削除しようとすると例外をスローするValues型としてプロパティを公開します。Dictionary<TKey, TValue>.ValueCollection

これは完全なハックのようです。ディクショナリの性質上、ディクショナリ内の値のコレクションを取得し、そこから値を追加/削除できる実装を作成することは理にかなっていますか?

4

1 に答える 1

6

これにより、ディクショナリ インターフェイスでCountプロパティとメソッドを使用できるようになります。Contains()

あなたが正しい; それは醜いハックです。
理想的な解決策は、新しい (.Net 4.5 への)IReadOnlyCollection<T>インターフェイスを使用することでした。

于 2012-10-31T19:20:50.063 に答える