我看到很多关于如何将Hashtable转换为Dictionary的问题/答案,但是如何将Dictionary转换为Hashtable呢?
最简单的方法是使用Hashtable的构造函数:
var dictionary = new Dictionary<object, object>();
//... fill the dictionary
var hashtable = new Hashtable(dictionary);
Dictionary<int, string> dictionary = new Dictionary<int, string>
{
{1,"One"},
{2,"Two"}
};
Hashtable hashtable = new Hashtable(dictionary);
试试这个
似乎很少有人想要这样做,但最简单的方法是:
var hash = new Hashtable();
foreach(var pair in dictionary) {
hash.Add(pair.Key,pair.Value);
}
IEqualityComparer
参数的 Hashtable
构造函数重载:var hashtable = new Hashtable(dictionary, (IEqualityComparer) dictionary.Comparer);
这样,您的Hashtable使用与字典相同的Comparer
。例如,如果您的字典使用不区分大小写的字符串键,则可能希望您的Hashtable
也是不区分大小写的。例如:
var d = new Dictionary<string, string>(StringComparer.OrdinalIgnoreCase);
d.Add("a", "a");
d.Add("b", "b");
bool found;
found = d.ContainsKey("A"); // true
var hashtable1 = new Hashtable(d);
var hashtable2 = new Hashtable(d, (IEqualityComparer) d.Comparer);
found = hashtable1["A"] != null; // false - by default it's case-sensitive
found = hashtable2["A"] != null; // true - uses same comparer as the original dictionary
Hashtable
的对象在很多地方都被使用。 - jpints14