문제

나는 이유를 이해하지 못한다 IList 구현 IEnumerable 그것을 고려합니다 IList 구현 ICollection 그것을 구현합니다 IEnumerable 또한.

도움이 되었습니까?

해결책

나는 그것이 왜 그것이 구현되었다고 선언하는지 알고 싶다고 생각합니다. ICollection 만큼 잘 IEnumerable, 첫 번째가 두 번째를 의미하는 경우. 주된 이유는 명확성이라고 생각합니다. 사람들이 되돌아 볼 필요가 없다는 것을 의미합니다. ICollection 이미 확장 된 것을 확인합니다 IEnumerable.

인터페이스 구현을 다시 고정 해야하는 경우가 있습니다. 이전에 기본 클래스에서 명시 적으로 구현 된 인터페이스 방법을 다시 구현하려면이 경우 그 이유라고 생각하지 않습니다.

편집 : 문서에서 구축 된 소스 코드에는 두 인터페이스를 포함한 선언이 있다고 가정했습니다. 또 다른 가능한 대안은 모두 계층 구조의 인터페이스는 DOC 생성기가 자동으로 끌어 당깁니다. 어떤 경우에는 질문이 "Doc 생성기가 왜 그렇게 하는가?

다른 팁

IList 구현 만 IEnumerable 협회에 의해; 즉, IT는 구현됩니다 IEnumerable 정확하게 왜냐하면 상속합니다 ICollection 그게 IEnumerable. 유형 계층 구조와 동일하게 얻을 수 있습니다 (단일 상속 만 :

class Enumerable {}
class Collection : Enumerable {}
class List : Collection {}

그래서 List 이다 Enumerable; 같은 방법으로, IList ~이다 IEnumerable.

예를 들어, 내가 쓰면 :

interface IA {}
interface IB : IA { }
interface IC : IB { }

그리고 메타 데이터를 보면 IC : IA, IB - 그러나 이것은 간접적 일뿐입니다. IL은 다음과 같습니다.

.class private interface abstract auto ansi IA
{
}
.class private interface abstract auto ansi IB
    implements IA
{
}
.class private interface abstract auto ansi IC
    implements IB, IA
{
}

Resharper에서 코드를 열면 IEnumerable 인터페이스 선언 켜짐 IList 이미 지정되어 있으므로 필요하지 않았습니다 ICollection.

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