Une collection qui représente un ensemble d’objets accessibles en parcourant chaque élément (en particulier, elle peut être accessible via la boucle foreach) Une collection contient plusieurs éléments, c’est-à-dire qu’il existe un objet de classe de collection et des objets de N éléments
Parce que toute classe de collection implémente l’interface IEnumerable, tout objet de classe de collection possède une méthode GetEnumerator(), qui peut retourner un objet implémentant l’interface IEnumerator, qui n’est ni un objet de classe de collection ni un objet de classe d’élément de collection, c’est un objet de classe indépendant. Cet objet vous permet d’itérer à travers chaque objet élément de l’objet de classe collection
Si la classe de collection est définie par l’utilisateur, l’utilisateur doit implémenter sa méthode GetEnumerator(), sinon les boucles ne peuvent pas être utilisées. Bien sûr, la classe IEnumerator correspondant à cette classe de collection personnalisée (la classe qui implémente l’interface) doit également être personnalisée
Par exemple, le IEnumerator correspondant à la classe de collection ArrayList est ArrayListEnumeratorSimple Le numérateur IE correspondant à la classe de collection Array est SZArrayEnumerator (Aucune de ces classes n’est couverte dans la documentation de la bibliothèque de classes .NET Framework (MSDN))
1. Les interfaces dans System.Colloctions qui représentent le comportement de la collection sont : 1) Iconilection Définissez la taille, le nombre d’enums et les méthodes de synchronisation pour toutes les collections. Dérivé de IEnumerable Elle définit le comportement le plus basique de la classe de collection, et toutes les classes de collection implémentent cette interface (interface de base) Mais son comportement est trop basique : c’est principalement une propriété de Compte, et il n’est pas très logique de l’implémenter seule
2) IEnombre Exposez une énumération qui supporte des itérations simples sur un ensemble Il ne dispose que d’une seule méthode, GetEnumerator(), qui renvoie une interface IEnumerator par laquelle il peut parcourir la collection En gros, toutes les classes de collection implémentent cette interface
3) IList L’implémentation d’IList est un ensemble de valeurs triables et accessibles par index pour ses membres, et elle implémente elle-même les interfaces ICollection et IEnumerable est la classe de base abstraite pour toutes les listes. Il existe trois catégories d’implémentations IList : lecture seule, taille fixe et taille variable.
4) IDictionnaire L’implémentation IDictionary est un ensemble de paires clé/valeur qui implémente elle-même les interfaces ICollection et IEnumerable est l’interface de base d’un ensemble de paires clé/valeur. Il existe trois catégories d’implémentations IDictionnaires : lecture seule, taille fixe et taille variable. IDictionary peut être appelé dictionnaire, carte ou liste de shash, et il accède aux valeurs en fonction de clés (de tout type).
2. Les classes de collection pouvant être utilisées directement dans System. Collections sont : 1) Liste d’Array Interfaces d’implémentation : IList, ICollection, IEnumerable Tant que la collection n’est pas modifiée, ArrayList peut supporter en toute sécurité plusieurs lecteurs simultanément Au fur et à mesure que des éléments sont ajoutés à l’ArrayList, la capacité est automatiquement augmentée à la demande par réallocation (augmentation 2x) Si vous devez créer un tableau d’objets, mais que vous ne connaissez pas la taille du tableau à l’avance, vous pouvez utiliser ArrayList ArrayList désigne tous les éléments comme des objets, il doit donc être tapé lors de l’accès aux éléments dans ArrayList Avantages : modification dynamique de la taille, insertion et retrait flexibles et pratiques des éléments, triabilité Inconvénients : Les performances d’insertion ne sont pas aussi bonnes que celles des tableaux, pas des types puissants
2) BitArray Implémentez les interfaces : ICollection et IEnumerable Gérer des baies compressées de valeurs de bits.
3) Tableau de hachage Interfaces d’implémentation : IDictionary, ICollection, IEnumerable Vous pouvez librement ajouter et retirer des éléments à la Hashtable, certains comme ArrayList, mais sans la surcharge de performance
4) ListeClassée Interfaces d’implémentation : IDictionary, ICollection, IEnumerable SortedLIst combine les avantages d’ArrayList et Hashtable, et peut être trié par valeur clé
5) File d’attente Implémentez les interfaces : ICollection et IEnumerable Les queques sont des files d’attente, accès premier entré et premier sorti à des éléments individuels Vous pouvez appeler la méthode GetEnumerator() de l’objet Queque pour que l’objet IEnumerator itère à travers les éléments de la file d’attente
6) Stack Implémentez les interfaces : ICollection et IEnumerable Une pile est une pile qui accède à des éléments individuels selon le principe du dernier arrivé, premier sorti Vous pouvez appeler la méthode GetEnumerator() de l’objet Stack pour que l’objet IEnumerator itère à travers les éléments de la pile
3. Les classes de collection mentionnées ci-dessus sont toutes des classes de collection générales, et la plupart des éléments qu’elles acceptent sont du type Objet, lorsque l’objet est placé dans Après la collection, les informations de type originales sont perdues – c’est-à-dire que ces classes générales de collection ne sont pas fortement typées La solution consiste à utiliser des classes de collection fortement typées Espace de noms System.Collections Espace de noms System.Collections.Specialized Certaines classes peuvent répondre aux exigences et peuvent être utilisées directement ou héritées
|