C#.NET集合类型Hashtable与Dictionary 的区别

来源:互联网 发布:淘宝商家在哪找的货源 编辑:程序博客网 时间:2024/05/18 20:08

1首先最基础的是 Hashtable注意t是小写的 ,命名空间不同
Hashtable   :using System.Collections;
Dictionary    :using System.Collection.Generic;

2.
1):单线程程序中推荐使用 Dictionary, 有泛型优势, 且读取速度较快, 容量利用更充分.
2):多线程程序中推荐使用 Hashtable, 默认的 Hashtable 允许单线程写入, 多线程读取, 而 Dictionary 非线程安全, 必须人为使用 lock 语句进行保护, 效率大减.

3.Dictionary 有按插入顺序排列数据的特性
4.对于值类型,特定类型(不包括 Object)的 Dictionary<(Of <(TKey, TValue>)>) 的性能优于 Hashtable,
因为 Hashtable 的元素属于 Object 类型,
所以在存储或检索值类型时通常发生装箱和取消装箱操作。

5.Dictionary 如果键值不存在 引用会引发异常
可以用ContarnsKey()  方法解决

6.常用属性
// Comparer
// 获取用于确定字典中的键是否相等的 IEqualityComparer。
// Count
// 获取包含在 Dictionary中的键/值对的数目。
// Item
// 获取或设置与指定的键相关联的值。
// Keys
// 获取包含 Dictionary中的键的集合。
//  Values
// 获取包含 Dictionary中的值的集合。
// 常用的方法 方法说明
//  Add   MyDictionary.Add (string key,double value);
// 将指定的键和值添加到字典中。
//  Clear    MyDictionary.Clear ();
// 从 Dictionary中移除所有的键和值。
//ContainsKey    MyDictionary.ContainsKey(string key);
// 确定 Dictionary是否包含指定的键。

// ContainsValue    MyDictionary.ContainsValue(double value)
// 确定 Dictionary是否包含特定值。
//GetEnumerator  MyDictionary.GetEnumerator(new Dictionary<string,double >("aaa",11.11);
//返回循环访问 Dictionary的枚举数。

//  Remove
//从 Dictionary中移除所指定的键的值。
// ToString
//返回表示当前 Object的 String。 (从 Object 继承。)
// TryGetValue   MyDictionary.TryGetValue(string key,out double value);
//注意因为用到了out所有必须在前面声明个变量即:double valueTest

// valueTest=0.0;
//if(!MyDictionary.TryGetValue(key,out valueTest))
//如果不存在这样的KEY VALUE
//那么 valueTest=0.0 ,要么就把真实的value赋给valueTest

 


 

原创粉丝点击