호출 코드가 컬렉션을 반복하는 경우에만 내부 컬렉션을 IEnumerable이 아닌 ReadOnlyCollection으로 노출하는 이유가 있습니까?
class Bar
{
private ICollection<Foo> foos;
// Which one is to be preferred?
public IEnumerable<Foo> Foos { ... }
public ReadOnlyCollection<Foo> Foos { ... }
}
// Calling code:
foreach (var f in bar.Foos)
DoSomething(f);
내가보기에 IEnumerable은 ReadOnlyCollection 인터페이스의 하위 집합이며 사용자가 컬렉션을 수정할 수 없도록합니다. 따라서 IEnumberable 인터페이스가 충분하면 사용할 인터페이스입니다. 그게 적절한 추론 방법입니까, 아니면 뭔가 놓치고 있습니까?
감사합니다 / Erik
ReadOnlyCollection
편집증이 있는 경우 반환 된 컬렉션을 계속 래핑하고 싶지만 이제는 특정 구현에 묶여 있지 않습니다.