どちらでも使えると思いますが、それぞれに用途があります。基本的にList
はIEnumerable
ですが、カウント機能、要素の追加、要素の削除があります
IEnumerableは要素のカウントに効率的ではありません
コレクションが読み取り専用であることが意図されている場合、またはコレクションの変更がによって制御されているParent
場合は、IList
正当な理由を返すCount
ことはお勧めできません。
Linqには、基になる型がの場合にCLR内でショートカットするCount()
拡張メソッドがIEnumerable<T>
あるため、パフォーマンスの違いは無視できます。.Count
IList
一般的に私は(意見)あなたが、その後の追加を行う親クラスにこれらのメソッドを追加する必要がある場合など、それ以外の消費者は、その後の原則に違反するモデル内のコレクションを管理している、可能性のIEnumerableを返すために、より良い練習と感じるmanufacturer.Models.Add(model)
の法律に違反しますデメテル。もちろん、これらは単なるガイドラインであり、厳密な規則ではありませんが、適用性を完全に理解するまでは、盲目的にフォローすることは、まったくフォローしないよりも優れています。
public interface IManufacturer
{
IEnumerable<Model> Models {get;}
void AddModel(Model model);
}
(注:nNHibernateを使用している場合は、異なるアクセサーを使用してプライベートIListにマップする必要がある場合があります。)