Area di riferimento
- Developing applications that use system types and collections
- Manage data in a .NET Framework application by using specialized collections. (Refer System.Collections.Specialized namespace)
- Specialized Dictionary
- HybridDictionary class
- IOrderedDictionary interface and OrderedDictionary class
- ListDictionary class
Specialized Dictionary
La classe HybridDictionary implementa l'interfaccia IDictionary e utilizza un ListDictionary finchè la collezione è piccola per poi passare ad un Hashtable quando la collezione diventa grande. Questo stratagemma garantisce una migliore performance nell'accesso alla struttura dati. La classe si utilizza come un comune dizionario:
HybridDictionary dizionario = new HybridDictionary();
dizionario["x"] = 1;
dizionario["y"] = 2;
dizionario["z"] = 3;
// Scorro gli elementi utilizzando un enumeratore
IDictionaryEnumerator e = dizionario.GetEnumerator();
while (e.MoveNext())
{
Console.WriteLine( "{0}={1}", e.Key, e.Value);
}
// Scorro gli elementi utilizzando il costrutto foreach
foreach(DictionaryEntry entry in dizionario)
{
Console.WriteLine("{0}={1}", entry.Key, entry.Value);
}
// Scorro le chiavi utilizzando il costrutto foreach
foreach (string chiave in dizionario.Keys)
{
Console.WriteLine("{0}={1}", chiave, dizionario[chiave]);
}
// Scorro i valori utilizzando il costrutto foreach
foreach (int num in dizionario.Values)
{
Console.WriteLine(num);
}
La classe OrderedDictionary implementa un dizionario le cui coppie chiave/valore sono accesibili tramite chiave o tramite indice. La classe implementa le interfacce IOrderedDictionary, IDictionary, ICollection, IEnumerable.
public interface IOrderedDictionary : IDictionary, ICollection, IEnumerable
{
// Methods
IDictionaryEnumerator GetEnumerator();
void Insert(int index, object key, object value);
void RemoveAt(int index);
// Properties
object this[int index] { get; set; }
}
Ecco un semplice utilizzo della classe OrderedDictionary:
OrderedDictionary d = new OrderedDictionary( );
d["Rosso"] = "#FF0000";
d["Verde"] = "#00FF00";
d["Blu"] = "#0000FF";
d.RemoveAt(d.Count - 1); // rimuove l'ultimo elemento del dizionario
d.RemoveAt(0); // rimuove il primo elemento del dizionario
d.Insert(0, "Bianco", "#FFFFFF"); // inserisce un elemento in prima posizione
string codiceColore = (string) d[0];
// Scorro gli elementi utilizzando il costrutto foreach
foreach (DictionaryEntry entry in d)
{
Console.WriteLine("{0}={1}", entry.Key, entry.Value);
}