Generische Sammlungen sind aufgrund ihrer Aussagekraft definitiv bevorzugt. Eine Sache, die Sie im Auge behalten sollten, wenn Sie von den nicht generischen Sammlungen abweichen, ist, dass das Verhalten manchmal anders ist als erwartet. Wenn Sie beispielsweise den Indexer einer Hashtable-Datei im Vergleich zu einem Dictionary verwenden, wirkt sich dies bei nicht vorhandenen Werten anders aus. Hashtable gibt null zurück, während Dictionary wirft.
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
Ein üblicher Weg, dies zu umgehen ist die folgende Technik zu verwenden:
string s = null;
if (dic.TryGetValue(k, out s))
{
// if we're here, k was found in the dictionary
}
Das oben nur zur Laufzeit zeigen wird, so dass es sich lohnt, im voraus zu wissen.
Und ähnlich, IComparable mit IComparable –
jalf
@jalf, danke, komplett vergessen, dass. –