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)
- Named Collections
- NameObjectCollectionBase class
- NameObjectCollectionBase.KeysCollection class
- NameValueCollection class
- CollectionsUtil
Named Collections
La classe NameValueCollection deriva dalla classe astratta NameObjectCollectionBase e rappresenta un dizionario simile a StringDictionary. Tuttavia è permesso l'inserimento di più valori per chiave i quali possono essere acceduti mediante la chiave stessa o un indice.
NameValueCollection d = new NameValueCollection();
// utilizzare l'indexer comporta la sovrascrittura del vecchio valore corrispondente alla chiave
d["chiave1"] = "1";
d["chiave1"] = "2";
d["chiave1"] = "3";
// utilizzare il metodo Add permette di inserire più valori in corrispondenza di una stessa chiave
d.Add("chiave2", "1");
d.Add("chiave2", "2");
d.Add("chiave2", "3");
string[] valori1 = d.GetValues("chiave1");
string[] valori2 = d.GetValues("chiave2");
Console.WriteLine("Numero elementi con chiave1: {0}", valori1.Length); // Output: 1
Console.WriteLine("Numero elementi con chiave2: {0}", valori2.Length); // Output: 3
Console.Write("chiave1: ");
foreach (string s in valori1) // Output: 3
{
Console.Write(s);
}
Console.WriteLine();
Console.Write("chiave2: ");
foreach (string s in valori2) // Output: 1, 2, 3
{
Console.Write(s + " ");
}
E' interessante notare che l'indexer e il metodo Add hanno un comportamento differente, ciò è dimostrato dall'output del codice scritto sopra.
CollectionsUtil
La classe CollectionsUtil permette di creare delle collection che ignorano il case delle stringhe.
Hashtable h = CollectionsUtil.CreateCaseInsensitiveHashtable();
SortedList l = CollectionsUtil.CreateCaseInsensitiveSortedList();