ICollection(T)インターフェイスの Add メソッドは、 LinkedList(T)クラスによって明示的に実装されています。このコレクションには、代わりに AddFirst メソッドと AddLast メソッドがあります (特に)。明示的に実装されたメソッドは、AddLast メソッドにマップされます。これにはいくつかの欠点があり、IMHO にはまったくメリットがありません。2つの主な欠点は次のとおりです。
- Add メソッドが必要なため、LinkedList(T) でコレクションの初期化を使用することはできません。
- メソッドで List(T) を使用していて、代わりに LinkedList(T) を使用するように変更したい場合は、代わりに AddLast を呼び出すように Add へのすべての呼び出しを更新する必要があります。
私が考える方法は、具象型を知っているときにまったく意味がない場合を除き、インターフェイス メンバーを明示的に実装するべきではないということです。たとえば、読み取り専用の ICollection(T) を実装している場合は、Add メソッドを明示的に実装する (そして効果的に非表示にする) 必要があります。
フレームワークに含めるべきではない、明示的に実装されたメソッドの他の例はありますか?
補足: 2 番目の問題を解決するには、LinkedList(T) クラスの拡張メソッド「Add」を作成します。