您的位置:首页 > 编程语言 > C#

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

2012-02-20 19:01 295 查看
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
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: