ICollection< T>を返すことの本当の利点は何ですか?リストの代わりに< T&gt ;? [複製]
-
06-07-2019 - |
質問
私は、パブリックAPIの場合、ListではなくICollection(またはIEnumerable)を常に返す必要があるというブログ投稿をいくつか読みました。 ListではなくICollectionを返すことの本当の利点は何ですか?
ありがとう!
解決
列挙子は、一度に1つのエンティティのみを返します。これは、利回りリターンを使用しているためです。一方、コレクションはリスト全体を返すため、リストを完全にメモリに保存する必要があります。
簡単な答えは、列挙子がより軽量で効率的であるということです。
他のヒント
基になるデータ構造を選択する際に、より多くの自由が与えられます。
Listは、実装がインデックス付けをサポートしていることを前提としていますが、ICollectionはそのような仮定を行いません。
これは、順序が無関係であるため、セットのパフォーマンスが向上する可能性があることを発見した場合、クライアントに影響を与えずにアプローチを自由に変更できることを意味します。
基本的なカプセル化です。
IListの方が適切だと思いますが、...
ICollectionは単なるインターフェイスですが、Listはそのインターフェイスの特定の実装です。後でリスト以外のコンテナを使用したい場合はどうしますか? ICollectionインターフェースを公開する場合、新しいコンテナーがICollectionインターフェースも実装している限り、後で内部コンテナーを別のものに変更できます。
所属していません StackOverflow