Le collezioni generiche sono decisamente preferite per la loro espressività. Una cosa da tenere a mente se il passaggio dalle raccolte non generiche è che a volte il comportamento potrebbe essere diverso da quello che ci si aspetta. Ad esempio, l'utilizzo dell'indicizzatore su un Hashtable rispetto a un dizionario agirà in modo diverso per i valori che non sono presenti. Hashtable restituirà null mentre il dizionario genererà.
Hashtable ht = new Hashtable();
ht.Add(1, "one");
string s1 = ht[1; // s1="one"
string s2 = ht[2]; // s2=null
var dic = new Dictionary<int, string>();
dic.Add(1, "one");
string s1 = dic[1]; // s1="one"
string s2 = dic[2]; // throws KeyNotFoundException
Un modo comune per gestire questa situazione è quello di utilizzare la seguente tecnica:
string s = null;
if (dic.TryGetValue(k, out s))
{
// if we're here, k was found in the dictionary
}
questo apparirà solo in fase di esecuzione quindi vale la pena conoscere prima del tempo.
fonte
2008-11-29 17:20:51
E allo stesso modo, IComparable con IComparable –
jalf
@jalf, grazie, completamente dimenticato di quello. –