2008-10-14 6 views
0

J'ai trouvé beaucoup de documents et de recommandations sur IEnumerator, IEnumerable, ICollection, IList et leurs homologues génériques. Malheureusement, je n'ai pas encore trouvé un tutoriel ou un livre qui explique toute la hiérarchie des interfaces, les implémentations génériques de ces interfaces et la meilleure utilisation de chaque type de ceux-ci. Quelle était votre meilleure source de connaissances sur les génériques, leurs interfaces et les exemples d'utilisation recommandée de ceux en C#?Quelle est votre meilleure ressource sur les génériques et leurs interfaces?

+0

Vous devez rebaliser ce soit collections. Les génériques ne sont pas toujours utilisés pour les collections. –

Répondre

3

La principale façon dont je suis venu à les comprendre était juste en regardant leurs interfaces.

L'héritage va comme ceci:

IList: ICollection: IEnumerable

Lorsque vous regardez l'interface IEnumerable, notez qu'il n'a que le strict minimum nécessaire pour pouvoir faire une boucle à travers un tas d'articles. Il n'a pas de compte ou autre chose. IEnumerable fonctionne bien même si ce que vous regardez est juste un flux venant sur un fil.

ICollection ajoute Count. Si vous mettez en place une sorte de collection, et si vous en connaissez la taille, vous devez l'implémenter. Dans ce cas, l'interface générique est un peu différente. ICollection <T> a également des méthodes pour modifier la collection en ajoutant et en supprimant des membres. Un ensemble non ordonné serait un bon candidat pour ICollection. IList ajoute la possibilité d'obtenir et de définir des membres de collection par index. Utilisez ceci quand l'ordre des articles est significatif. Lorsque vous avez des index, vous pouvez faire des choses comme échanger les 4e et 5e articles pour changer leur ordre.

0

vous venez de manquer un :)

IDictionary: IList: ICollection: IEnumerable

+0

IDictionary est un peu différent des autres interfaces - il semble être juste une collection de paires clé/valeur (même fonctionnalité que ICollection >), sauf si je me trompe. – alexandrul

Questions connexes