Pergunta

Eu não entendo porque IList implementos IEnumerable levando em consideração que IList implementos ICollection isso implementa IEnumerable também.

Foi útil?

Solução

Presumo que você queira saber por que declara que implementa ICollection assim como IEnumerable, quando o primeiro implica o segundo. Eu suspeito que o principal motivo é clareza: significa que as pessoas não precisam olhar para trás para ICollection Para verificar isso que já se estende IEnumerable.

Existem outros momentos em que você precisa redeclar uma implementação de interface, se você deseja implementar um método de interface que foi implementado anteriormente em uma classe base - mas não acho que seja esse o motivo neste caso.

EDIT: Eu tenho assumido que o código -fonte da qual os documentos são construídos tem a declaração, incluindo ambas as interfaces. Outra alternativa possível é que tudo As interfaces na hierarquia são automaticamente puxadas pelo gerador DOC. Nesse caso, a pergunta se torna "por que o gerador do DOC faz isso" - e a resposta é quase certamente ainda "clareza".

Outras dicas

IList Apenas implementos IEnumerable por Associaton; ou seja, implementa IEnumerable precisamente Porque herda ICollection qual é IEnumerable. Você obteria o mesmo com hierarquias de tipo (embora apenas herança única:

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

assim List é um Enumerable; do mesmo jeito, IList é IEnumerable.

Por exemplo, se eu escrever:

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

E olhe para os metadados, então parece que IC : IA, IB - Mas isso é apenas indireto; Aqui está o 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
{
}

Se você abrisse o código em Resharper, indicaria que o IEnumerable Declaração de interface em IList não era necessário, pois já está especificado via ICollection.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top