Pergunta

Eu li um par de post mencionando que para APIs públicas devemos sempre voltar ICollection (ou IEnumerable) em vez de List. Qual é a vantagem real de retornar ICollection em vez de uma lista?

Obrigado!

Duplicate: Qual é a diferença entre lista (de T) e Coleta (de T)?

Foi útil?

Solução

Um enumerador retorna apenas uma entidade em um momento como você iterar sobre ele. Isso é porque ele usa um rendimento retorno . A coleção, por outro lado, retorna a lista inteira, exigindo que a lista ser armazenado completamente na memória.

A resposta curta é que os entrevistadores são mais leves e mais eficientes.

Outras dicas

Ele lhe dá mais liberdade na escolha da estrutura de dados subjacente.

A Lista assume que os suportes de implementação indexação, mas ICollection não faz tal suposição.

Isto significa que se você descobrir que um conjunto pode proporcionar um melhor desempenho desde ordenação é irrelevante, então você está livre para mudar sua abordagem, sem afetar os clientes.

É encapsulamento básico.

Eu acho que IList seria mais apropriado, mas ...

ICollection é apenas uma interface, enquanto List é uma implementação específica desse interface. E se você queria, mais tarde, usar algum outro recipiente além de uma lista? Se você expor publicamente uma interface ICollection, você pode mudar seu recipiente interno para outra coisa mais tarde -., Desde que o novo recipiente também implementa a interface ICollection

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