Questo articolo è un articolo speculare di traduzione automatica, clicca qui per saltare all'articolo originale.

Vista: 22702|Risposta: 0

[Fonte] Esistono diversi tipi di rollup per le collezioni in C#

[Copiato link]
Pubblicato su 11/11/2014 08:44:59 | | |
Una collezione che rappresenta un insieme di oggetti accessibili attraversando ogni elemento (in particolare, può essere accessibile usando il ciclo foreach)
Una collezione contiene più elementi, cioè esiste un oggetto classe collezione e N oggetti elementi

Poiché qualsiasi classe di collezione implementa l'interfaccia IEnumerable, ogni oggetto classe di raccolta ha un metodo GetEnumerator(), che può restituire un oggetto che implementa l'interfaccia IEnumerator, che non è né un oggetto di classe di collezione né un oggetto di classe di elemento di collezione, è un oggetto di classe indipendente. Questo oggetto ti permette di iterare attraverso ogni oggetto elemento nell'oggetto classe collezione

Se la classe di raccolta è definita dall'utente, l'utente deve implementare il suo metodo GetEnumerator(), altrimenti i cicli non possono essere utilizzati. Naturalmente, anche la classe IEnumerator corrispondente a questa classe di raccolta personalizzata (la classe che implementa l'interfaccia) deve essere personalizzata

Ad esempio, il IEnumerator corrispondente alla classe di raccolta ArrayList è ArrayListEnumeratorSimple
            Il IEnumerator corrispondente alla classe di collezione Array è SZArrayEnumerator
      (Nessuna delle due classi è coperta nella documentazione della .NET Framework Class Library (MSDN))

1. Le interfacce in System.Colloctions che rappresentano il comportamento della collezione sono:
1) Icollettività
Definisci la dimensione, il numero di enum e i metodi di sincronizzazione per tutte le collezioni. Derivato da IEnumerable
Definisce il comportamento più basilare della classe di collezione, e tutte le classi di raccolta implementano questa interfaccia (interfaccia base)
Ma il suo comportamento è troppo basilare: è principalmente una proprietà di Count, e non ha molto senso implementarla da sola

2) IEnumeroso
Esponi un'enumerazione che supporta semplici iterazioni su un insieme
Ha un solo metodo, GetEnumerator(), che restituisce un'interfaccia IEnumerator attraverso la quale può attraversare la collezione
Praticamente tutte le classi di raccolta implementano questa interfaccia

3) IList
L'implementazione di IList è una raccolta di valori ordinabili e accessibili tramite indice per i suoi membri, e implementa a sua volta le interfacce ICollection e IEnumerable
è la classe base astratta per tutte le liste. Esistono tre categorie di implementazioni IList: solo lettura, dimensione fissa e dimensione variabile.

4) Identificazione
L'implementazione IDictionary è una raccolta di coppie chiave/valore che a sua volta implementa le interfacce ICollection e IEnumerable
è l'interfaccia base di una raccolta di coppie chiave/valore. Esistono tre categorie di implementazioni IDictionary: solo lettura, dimensione fissa e dimensione variabile.
IDictionary può essere chiamato dizionario, mappa o shash list, e accede ai valori basati su chiavi (di qualsiasi tipo).

2. Le classi di collezione che possono essere utilizzate direttamente in System. Le collezioni sono:
1) Array List
Implementare interfacce: IList, ICollection, IEnumerable
Finché la collezione non viene modificata, ArrayList può supportare in sicurezza più lettori contemporaneamente
Man mano che gli elementi vengono aggiunti all'ArrayList, la capacità aumenta automaticamente su richiesta riallocando (aumento 2x)
Se devi creare un array di oggetti, ma non conosci la dimensione dell'array in anticipo, puoi usare ArrayList
ArrayList si riferisce a tutti gli elementi come oggetti, quindi deve essere tipizzato quando si accedono agli elementi in ArrayList
Pro: Modifica dinamica della dimensione, inserimento e rimozione di elementi flessibile e comodo, smistamento
Svantaggi: Le prestazioni di inserimento non sono buone come gli array, non sono di tipo forte

2) BitArray
Implementa interfacce: ICollection ed IEnumerable
Gestire array compressi di valori di bit.

3) Hashtable
Implementare interfacce: IDictionary, ICollection, IEnumerable
Puoi aggiungere e rimuovere liberamente elementi all'Hashtable, alcuni come ArrayList, ma senza il sovraccarico delle prestazioni

4) SortedList
Implementare interfacce: IDictionary, ICollection, IEnumerable
SortedLIst combina i vantaggi di ArrayList e Hashtable, e può essere ordinato per valore chiave

5) Coda
Implementa interfacce: ICollection ed IEnumerable
Le queque sono code, accesso first-in, first-out, agli elementi individuali
Puoi chiamare il metodo GetEnumerator() dell'oggetto Queque per far sì che l'oggetto IEnumerator iteri tra gli elementi della coda

6) Stack
Implementa interfacce: ICollection ed IEnumerable
Uno stack è uno stack che accede a singoli elementi su base di ultimo in ingresso, primo in uscita
Puoi chiamare il metodo GetEnumerator() dell'oggetto Stack per far sì che l'oggetto IEnumerator iteri tra gli elementi dello stack

3. Le classi di collezione menzionate sopra sono tutte classi di collezione generali, e la maggior parte degli elementi che accettano sono di tipo Oggetto, quando l'oggetto viene inserito in
Dopo la raccolta, le informazioni di tipo originali si perdono - cioè queste classi generali di raccolta non sono fortemente tipate
La soluzione alternativa è utilizzare classi di raccolta fortemente tipate
Spazio nominale System.Collections
System.Collections.Spazio di nomi specializzato Alcune classi possono soddisfare i requisiti e possono essere usate direttamente o ereditate





Precedente:Una lettera aperta alla maggior parte dei alla vigilia del Giorno dei Single
Prossimo:Range Rover Generico in C# (Turn)
Disconoscimento:
Tutto il software, i materiali di programmazione o gli articoli pubblicati dalla Code Farmer Network sono destinati esclusivamente all'apprendimento e alla ricerca; I contenuti sopra elencati non devono essere utilizzati per scopi commerciali o illegali, altrimenti gli utenti dovranno sostenere tutte le conseguenze. Le informazioni su questo sito provengono da Internet, e le controversie sul copyright non hanno nulla a che fare con questo sito. Devi eliminare completamente i contenuti sopra elencati dal tuo computer entro 24 ore dal download. Se ti piace il programma, ti preghiamo di supportare software autentico, acquistare la registrazione e ottenere servizi autentici migliori. In caso di violazione, vi preghiamo di contattarci via email.

Mail To:help@itsvse.com