colecciones genéricas son definitivamente preferidos debido a su expresividad. Una cosa a tener en cuenta si el cambio de las colecciones no genéricas es que a veces el comportamiento puede ser diferente de lo que esperaba. Por ejemplo, usar el indexador en un Hashtable vs. un diccionario actuará de manera diferente para los valores que no están presentes. Hashtable devolverá nulo mientras Dictionary lanzará.
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
Una forma común de manejar esto es usar la siguiente técnica:
string s = null;
if (dic.TryGetValue(k, out s))
{
// if we're here, k was found in the dictionary
}
mismo se mostrará solamente en tiempo de ejecución por lo que vale la pena saber de antemano.
Y del mismo modo, IComparable con IComparable –
jalf
@jalf, gracias, se olvidó completamente de eso. –