这篇文章给大家介绍c#中散列表和字典有什么区别,内容非常详细,感兴趣的小伙伴们可以参考借鉴,希望对大家能有所帮助。
1, Dictionary
2,字典的键和值是泛型存储,哈希表的键和值都是对象
3,字典是泛型存储,不需要进行类型转换,哈希表由于使用对象,在存储或者读取值时都需要进行类型转换,所以比较耗时
4,单线程程序中推荐使用字典,有泛型优势,且读取速度较快,容量利用更充分。多线程程序中推荐使用散列表,默认的Hashtable允许单线程写入,多线程读取,对哈希表进一步调用同步()方法可以获得完全线程安全的类型。而词典非线程安全,必须人为使用锁语句进行保护,效率大减。
5,在通过代码测试的时候发现关键是整数型词典的效率比Hashtable快,如果关键是字符串型,字典的效率没有Hashtable快。
对于如何进行选择,个人倾向于使用字典,原因是:
1,字典是可排序的,散列表如果想排序还需要采用别的方式进行
2,词典有泛型优势,效率要高
<强> Hashtable用法举例:强>
Hashtable Hashtable =, new 散列表(); ,,,,,,,,,,,hashtable.Add (“id",,“BH0001"); ,,,,,,,,,,,hashtable.Add (“name",,“TM"); ,,,,,,,,,,,hashtable.Add (“sex",,“男”); ,,,,,,,,,,,Console.WriteLine (“\ t 键\ t 值“); ,,,,,,,,,,,foreach (DictionaryEntry dicEntry  hashtable拷贝) ,,,,,,,,,,,,,,,Console.WriteLine (“\ t “, +, dicEntry.Key +,“\ t “, +, dicEntry.Value);
运行结果:
<强>字典用法举例:强>
Dictionary<字符串,string>, dictionary =, new Dictionary<字符串,string> (); ,,,,,,,,,,,dictionary.Add (“id",,“BH0001"); ,,,,,,,,,,,dictionary.Add (“name",,“TM"); ,,,,,,,,,,,dictionary.Add (“sex",,“男”); ,,,,,,,,,,,Console.WriteLine (“\ t 键\ t 值“); ,,,,,,,,,,,foreach (var dic 拷贝字典) ,,,,,,,,,,,,,,,Console.WriteLine (“\ t “, +, dic.Key +,“\ t “, +, dic.Value);
运行结果:
c#。net 3.5以上的版本引入Linq后,字典字典排序变得十分简单,用一句类似sql数据库查询语句即可搞的定,不过、。net 2.0排序要稍微麻烦一点。下面举例说明字典的排序方法:
<强>字典按值值排序强>
Dictionary<字符串,int>, dic =, new Dictionary<字符串,int> (); dic.Add (“index.html", 50); dic.Add (“product.html",, 13); dic.Add (“aboutus.html",, 4); dic.Add (“online.aspx",, 22); dic.Add (“news.aspx",, 18); private static  void DictonarySort(字符串,Dictionary, dic) ,,,,,,,{ ,,,,,,,,,,,var dicSort =,得到objDic 拷贝dic orderby objDic.Value descending select objDic; ,,,,,,,,,,,foreach (字符串,KeyValuePair , kvp 拷贝dicSort) ,,,,,,,,,,,,,,,Console.WriteLine (kvp.Key +,“:“, +, kvp.Value ); ,,,,,,,}
排序结果:
索引。html: 50
引用>
在线。aspx: 22
新闻。aspx: 18
产品。html: 13
aboutus。html: 4上述代码是按降序(倒序)排列,如果想按升序(顺序)排列,只需要把变量dicSort右边的下行去掉即可。
<强> c#字典键排序强>
如果要按排键序,只需要把变量dicSort右边的objDic。改值为objDic。关键即可。
c#是什么
c#是一个简单,通用,面向对象的编程语言,它由微微软软开发,继承了C和c++强大功能,并且去掉了一些它们的复杂特性,c#综合了VB简单的可视化操作和c++的高运行效率,以其强大的操作能力,优雅的语法风格,创新的语言特性和便捷的面向组件编程从而成为。净开发的首选语言,但它不适用于编写时间急迫或性能非常高的代码,因为c#缺乏性能极高的应用程序所需要的关键功能。
关于c#中散列表和字典有什么区别就分享到这里了,希望以上内容可以对大家有一定的帮助,可以学到更多知识。如果觉得文章不错,可以把它分享出去让更多的人看的到。
c#中散列表和字典有什么区别