둘 중 하나를 사용할 수 있다고 생각하지만 각각 용도가 있습니다. 기본적으로 List
는 IEnumerable
기능 이 있지만 요소 추가, 요소 제거
IEnumerable은 요소 계산에 효율적이지 않습니다.
컬렉션이 읽기 전용이거나 컬렉션의 수정이에 의해 제어되는 Parent
경우 IList
just for 를 반환하는 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에 매핑해야 할 수 있습니다.)