Cet article est un article miroir de traduction automatique, veuillez cliquer ici pour accéder à l’article original.

Vue: 22702|Répondre: 0

[Source] Il existe plusieurs types de rollups pour les collections en C#

[Copié le lien]
Publié sur 11/11/2014 08:44:59 | | |
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





Précédent:Une lettre ouverte à la majorité des cons à la veille de la Journée des célibataires
Prochain:Range Rover générique en C# (Turn)
Démenti:
Tous les logiciels, supports de programmation ou articles publiés par Code Farmer Network sont uniquement destinés à l’apprentissage et à la recherche ; Le contenu ci-dessus ne doit pas être utilisé à des fins commerciales ou illégales, sinon les utilisateurs assumeront toutes les conséquences. Les informations sur ce site proviennent d’Internet, et les litiges de droits d’auteur n’ont rien à voir avec ce site. Vous devez supprimer complètement le contenu ci-dessus de votre ordinateur dans les 24 heures suivant le téléchargement. Si vous aimez le programme, merci de soutenir un logiciel authentique, d’acheter l’immatriculation et d’obtenir de meilleurs services authentiques. En cas d’infraction, veuillez nous contacter par e-mail.

Mail To:help@itsvse.com