목록 대신 iCollection 를 반환 할 때의 진정한 이점은 무엇입니까? [복제하다

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

문제

나는 공개 API의 경우 항상 목록 대신 iCollection (또는 ienumerable)을 반환해야한다고 언급 한 블로그 게시물 몇 개를 읽었습니다. 목록 대신 iCollection을 반환 할 때의 진정한 이점은 무엇입니까?

감사!

복제하다: 목록 (t)과 수집 (t)의 차이점은 무엇입니까?

도움이 되었습니까?

해결책

열거자는 반복 할 때 한 번에 하나의 엔티티 만 반환합니다. a를 사용하기 때문입니다 수익률 수익률. 반면에 컬렉션은 전체 목록을 반환하여 목록을 메모리에 완전히 저장해야합니다.

짧은 대답은 열거자가 더 가볍고 효율적이라는 것입니다.

다른 팁

기본 데이터 구조를 선택할 때 더 많은 자유를줍니다.

목록은 구현이 인덱싱을 지원한다고 가정하지만 ICollection은 그러한 가정을하지 않습니다.

즉, 주문이 관련이 없기 때문에 세트가 더 나은 성능을 제공 할 수 있음을 발견하면 클라이언트에 영향을 미치지 않고 접근 방식을 자유롭게 변경할 수 있습니다.

기본 캡슐화입니다.

나는 Ilist가 더 적절하다고 생각하지만 ...

iCollection은 인터페이스 일뿐 아니라 List는 해당 인터페이스의 특정 구현입니다. 나중에 목록 외에 다른 컨테이너를 사용하고 싶다면 어떻게해야합니까? iCollection 인터페이스를 공개적으로 노출시키는 경우 새 컨테이너가 ICollection 인터페이스를 구현하는 한 내부 컨테이너를 다른 것으로 변경할 수 있습니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top