Em um curso o instrutor usa IList para criar a lista em uma entidade.
Em outro usa ICollection.
Alguma diferença em potencial ao usar um ou outro na modelagem?
Notei que mesmo quem usa ICollection ao criar o atributo, a instancia com new List.
Em um curso o instrutor usa IList para criar a lista em uma entidade.
Em outro usa ICollection.
Alguma diferença em potencial ao usar um ou outro na modelagem?
Notei que mesmo quem usa ICollection ao criar o atributo, a instancia com new List.
Olá Jaqueline, tudo bem?
Não manjo muito de C#, mas essa questão tem mais a ver com O.O do que com a linguagem em si.
Fui dar uma olhada na documentação e vi que IList
é uma implementação de ICollection
. A diferença entre uma ou outra é somente em termos de Abstração e Polimorfismo.
Por exemplo você pode ter as seguintes declarações:
ICollection collection = new List ...
ou
ICollection collection = new Hashtable ...
Obs: Caso eu tenha cometido algum erro de sintax me perdoe estou levando em consideração o que você tinha escrito e alguns exemplos que eu vi. =/
Se eu não digitei nada errado, ambas as declarações são válidas, pois estamos usando um tipo mais genérico.
O problema disso é que como estou atribuindo tanto um quanto o outro para ICollection
só poderei usar os métodos de ICollection
. Para usar método específicos de List
ou de Hashtable
terei que fazer um cast.
A grande vantagem nisso é que posso trocar a implementação por qualquer um que implemente ICollection
.
Se eu usar IList
só posso usar implementações de IList
como ArrayList
, LinkedList
.
Espero ter ajudado, e bons estudos.