ICollection< T>を返すことの本当の利点は何ですか?リストの代わりに< T&gt ;? [複製]

StackOverflow https://stackoverflow.com/questions/426182

質問

私は、パブリックAPIの場合、ListではなくICollection(またはIEnumerable)を常に返す必要があるというブログ投稿をいくつか読みました。 ListではなくICollectionを返すことの本当の利点は何ですか?

ありがとう!

複製:の違いは何ですかリスト(T)およびコレクション(T)?

役に立ちましたか?

解決

列挙子は、一度に1つのエンティティのみを返します。これは、利回りリターンを使用しているためです。一方、コレクションはリスト全体を返すため、リストを完全にメモリに保存する必要があります。

簡単な答えは、列挙子がより軽量で効率的であるということです。

他のヒント

基になるデータ構造を選択する際に、より多くの自由が与えられます。

Listは、実装がインデックス付けをサポートしていることを前提としていますが、ICollectionはそのような仮定を行いません。

これは、順序が無関係であるため、セットのパフォーマンスが向上する可能性があることを発見した場合、クライアントに影響を与えずにアプローチを自由に変更できることを意味します。

基本的なカプセル化です。

IListの方が適切だと思いますが、...

ICollectionは単なるインターフェイスですが、Listはそのインターフェイスの特定の実装です。後でリスト以外のコンテナを使用したい場合はどうしますか? ICollectionインターフェースを公開する場合、新しいコンテナーがICollectionインターフェースも実装している限り、後で内部コンテナーを別のものに変更できます。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top