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
|