Pourquoi ICollection
implémente à la fois IEnumerable
et IEnumerable
?
Quel est l'objectif de ceci? En quoi IEnumerable
bénéficie à ICollection
?
Pourquoi ICollection
implémente à la fois IEnumerable
et IEnumerable
?
Quel est l'objectif de ceci? En quoi IEnumerable
bénéficie à ICollection
?
IEnumerable
force toute implémentation à également implémenter le non-générique IEnumerable
. C'est sûr, pour les mêmes raisons pour lesquelles IEnumerable
est covariant à partir de .NET 4... vous pouvez toujours convertir le T
en object
pour la forme non-générique.
En gros, cela signifie que si vous avez du code qui utilise un paramètre de type IEnumerable
, vous pouvez toujours l'appeler avec quelque chose comme List
.
Eric Lippert a écrit un article de blog récemment sur la raison pour laquelle les collections finissent par implémenter de nombreuses interfaces, et Brad Abrams a écrit un article de blog en 2005 sur la décision spécifique IEnumerable
/IEnumerable
.
L'interface non générique est destinée à assurer la compatibilité ascendante. Si vous écrivez du code en utilisant des génériques et que vous souhaitez transmettre votre collection à un module écrit en .NET 1.0 (qui n'a pas de génériques), vous voulez toujours que cela réussisse, et vous voulez que l'ancienne méthode puisse itérer à travers celle-ci.
Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.