Je sais que IList est l'interface et que List est le type concret, mais je ne sais toujours pas quand utiliser chacun d'eux. Ce que je fais maintenant, c'est que si je n'ai pas besoin des méthodes Sort ou FindAll, j'utilise l'interface. Ai-je raison ? Existe-t-il un meilleur moyen de décider quand utiliser l'interface ou le type concret ?
Vous ne devriez pas traiter les types d'entrée/sortie différemment. Les types d'entrée et de sortie doivent ambos être le type le plus élémentaire (de préférence une interface) qui répondra aux besoins des clients. L'encapsulation repose sur le fait de dire aux clients le moins possible sur l'implémentation de votre classe. Si vous retournez une liste concrète, vous ne pouvez pas ensuite passer à un autre type plus performant sans obliger tous vos clients à recompiler/mettre à jour.
2 votes
Si quelqu'un se pose encore la question, je trouve les meilleures réponses ici : stackoverflow.com/questions/400135/listt-or-ilistt