목록 대신 iCollection 를 반환 할 때의 진정한 이점은 무엇입니까? [복제하다
-
06-07-2019 - |
문제
나는 공개 API의 경우 항상 목록 대신 iCollection (또는 ienumerable)을 반환해야한다고 언급 한 블로그 게시물 몇 개를 읽었습니다. 목록 대신 iCollection을 반환 할 때의 진정한 이점은 무엇입니까?
감사!
해결책
열거자는 반복 할 때 한 번에 하나의 엔티티 만 반환합니다. a를 사용하기 때문입니다 수익률 수익률. 반면에 컬렉션은 전체 목록을 반환하여 목록을 메모리에 완전히 저장해야합니다.
짧은 대답은 열거자가 더 가볍고 효율적이라는 것입니다.
다른 팁
기본 데이터 구조를 선택할 때 더 많은 자유를줍니다.
목록은 구현이 인덱싱을 지원한다고 가정하지만 ICollection은 그러한 가정을하지 않습니다.
즉, 주문이 관련이 없기 때문에 세트가 더 나은 성능을 제공 할 수 있음을 발견하면 클라이언트에 영향을 미치지 않고 접근 방식을 자유롭게 변경할 수 있습니다.
기본 캡슐화입니다.
나는 Ilist가 더 적절하다고 생각하지만 ...
iCollection은 인터페이스 일뿐 아니라 List는 해당 인터페이스의 특정 구현입니다. 나중에 목록 외에 다른 컨테이너를 사용하고 싶다면 어떻게해야합니까? iCollection 인터페이스를 공개적으로 노출시키는 경우 새 컨테이너가 ICollection 인터페이스를 구현하는 한 내부 컨테이너를 다른 것으로 변경할 수 있습니다.
제휴하지 않습니다 StackOverflow