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