繁体   English   中英

如何在C#中将Dictionary <>转换为Hashtable?

[英]How to convert Dictionary<> to Hashtable in C#?

我看到很多关于如何将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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM