IDictionary<TKey, TValue>
は から継承していますIEnumerable<KeyValuePair<TKey, TValue>>
がIDictionary
、何らかの理由で から継承していませんIEnumerable<DictionaryEntry>
。なぜだろう?.OfType<DictionaryEntry>()
に対してクエリを実行する必要があるたびに、これを醜く書くのは嫌いIDictionary
です。
2 に答える
4
IDictionary
古い(ジェネリック以前の)インターフェースであるためです。これを変更すると、既存のコードが壊れます。それは遺産です。
根本的な問題は、なぜ (まだ) IDictionary ベースのクラスを使用していて、アップグレードできないのですか?
于 2010-06-18T11:00:57.257 に答える
3
その変更を行うと、インターフェースの既存の実装がすべて壊れます (インターフェースが持つべきメソッドの一部が突然失われるため)。
さらに、IDictionary は、ジェネリックより前のレガシー互換性のためにのみ存在します。どうしても必要な場合を除き、新しいコードでは使用しないでください。実際にオブジェクト型を扱っている場合は、代わりに IDictionary<object, object> を使用できます。
于 2010-06-18T11:00:58.657 に答える