通常は、ユーザーが有意義に操作できる、最も強力でないインターフェイスを公開することをお勧めします。ユーザーが列挙可能なデータのみを必要とする場合は、 を返しIEnumerable<User>
ます。ユーザーがリストを変更できるようにする必要があるためにそれが十分でない場合 (注意! 多くの場合、そうではありません)、. を返しますIList<User>
。
/編集:
Joel は彼のコメントで有効な質問をしています。(言い換え)
この背後にある考え方は、データを返すメソッドは、ユーザーがそのコンテンツを変更することを想定していない可能性があるということです。クラスの別のメソッドは、リストへの参照が返された後も、リストが空ではないことを想定している可能性があります。ユーザーがリストからすべてのデータを削除するとします。もう 1 つのメソッドは、ele が不要であった可能性があることを追加で確認する必要があります。
さらに重要なことに、これにより、戻り値の型を通じて内部実装の一部が公開されます。将来、コンテナーを使用しないように実装を変更する必要がある場合IList
は、問題があります。ビルドを壊す変更を導入して、メソッド コントラクトを変更する必要があります。または、データをリスト コンテナーにコピーする必要があります。
Values
例として、効率的な実装が Dictionary を使用し、を実装しないコレクションを返すだけだと想像してくださいIList
。