Manage a group of associated data using collections (System.Collections namespace)
Classi: Le classi non fanno che implementare le interfacce.:
ArrayList, implementa: IList, ICollection, IEnumerable, ICloneable
Hashtable: implementa IDictionary, ICollection, IEnumerable, ICloneable .. e qualche altra interfaccia non di liste per la serializzazione e deserializzazione;
CollectionBase: è una classe astratta per collezioni fortemente tipizzate. Implementa IList, ICollection, IEnumerable.
Per usarla si deve creare una propria classe derivando da quella..
ReadOnlyCollectionBase: è una classe astratta per una collezione che, dopo la fase di creazione, diventa read-only
DictionaryBase: è la classe astratta per un dizionario: insieme di coppie chiave-valore.
DictionaryEntry: è la classe per definire la coppia chiave – valore.
Queue: è una lista tradizionale (FIFO), implementa ICollection, IEnumerable, Icloneable.
SortedList: è una sorta di dizionario ordinato per chiave, accessibile sia per chiave che per indice. Implementa: ICollection, IEnumerable, ICloneable
BitArray: gestisce in modo compatto un array di bit. Implementa ICollection, IEnumerable, ICloneable.
Stack: è la classica lista LIFO. Implementa: ICollection, IEnumerable, ICloneable
Comparer: serve per paragonare due oggetti, il costruttore puo’ prende la cultura come parametro. C’e’ anche una bella classe CaseInsensitiveComparer bello per paragonare le stringhe
Manage a group of associated data using collections (System.Collections namespace)
Interfacce:
ICollection: è l’interfaccia per quasi tutte le liste: struttura l’interfaccia per inserire un elemento, per inserire un elemento in una posizione, per avere il conteggio e un enumerator che funziona come iteratore, che implementa l’intefaccia IEnumerator.
IComparer: è un’interfaccia che espone solo in metodo Compare per personalizzare il confronti fra gli oggetti della collezione.
IDictionary: è l’interfaccia per una collezione di coppie “chiave – valore”, prevede funzioni come Add, Contains, Clear e la scansione con un IDictionaryEnumerator.
IEnumerable è una interfaccia ha solo una funzione che ritorna un IEnumerator. Il bello di una classe che implementa questo tipo di interfaccia è che si puo’ utilizzare l’enumerator in un foreach rendendo il tutto molto molto semplice nell’uso.
Se si usa un IEnumerator è necessarissimo utilizzare yield per restituire i valori.
public class Mesi : System.Collections.IEnumerable
{
string[] _mesi = {"Gen","Feb","Mar","Apr","Mag","Giu","Lug","Ago","Set","Ott","Nov","Dec"};
public System.Collections.IEnumerator GetEnumerator()
{
for (int i = 0; i < _mesi.Length; i++)
{
yield return _mesi[i];
}
}
}
E si usa:
Mesi mieimesi = new Mesi();
foreach (string s in mieimesi)
Console.Write(" {0} ", s);
IEqualityComparer: è una interfaccia per soli metodi: Equals e GetHashCode.
IHashCodeProvider: è un interfaccia per definire una propria funzione Hash
IList: E’ l’interfaccia per una lista di oggetti: Add, Insert, getIndexOf,Remove,
(ICloneable è l’interfaccia per ottenere una copia dell’oggetto)