HashtableよりDictionary

Hashtableで定義すると

Hashtable hash = new Hashtable();
hash.Add("foo", "bar");
// 型変換しないと値がObjectで戻ってきて面倒
Trace.WriteLine(hash["foo"].ToString());

Dictionaryで定義すると

Dictionary<String, String> dic = new Dictionary<String, String>();
dic.Add("foo", "bar");
// 型が定義されているのでStringが返る
Trace.WriteLine(dic["foo"]);

最初に定義しておけば返り値がちゃんとした型で戻ってくるので、放り込む値の型が最初から決まっているのであればDictionaryを使った方がスマートかもしれないよ、という話。
どちらもforeach()で回せるので、使い勝手は同じだし。