说明
必须包含名空间system.collection.generic
dictionary里面的每一个元素都是一个键值对(由二个元素组成:键和值)
键必须是唯一的,而值不需要唯一的
键和值都可以是任何类型(比如:string, int, 自定义类型,等等)
通过一个键读取一个值的时间是接近o(1)
键值对之间的偏序可以不定义
使用方法:
// 定义 dictionary<string, string> openwith = new dictionary<string, string>();
// 添加元素 openwith.add("txt", "notepad.exe"); openwith.add("bmp", "paint.exe"); openwith.add("dib", "paint.exe"); openwith.add("rtf", "wordpad.exe");
// 取值 console.writeline("for key = "rtf", value = {0}.", openwith["rtf"]);
// 更改值 openwith["rtf"] = "winword.exe"; console.writeline("for key = "rtf", value = {0}.", openwith["rtf"]);
// 遍历key foreach (string key in openwith.keys) { console.writeline("key = {0}", key); }
// 遍历value foreach (string value in openwith.values) { console.writeline("value = {0}", value); } //遍历value, second method dictionary<string, string>.valuecollection valuecoll = openwith.values; foreach (string s in valuecoll) { console.writeline("second method, value = {0}", s); }
// 遍历字典 foreach (keyvaluepair<string, string> kvp in openwith) { console.writeline("key = {0}, value = {1}", kvp.key, kvp.value); }
// 添加存在的元素 try { openwith.add( " txt ", "winword.exe"); } catch (argumentexception) { console.writeline("an element with key = "txt" already exists."); }
// 删除元素 openwith.remove("doc"); if (!openwith.containskey("doc")) { console.writeline("key "doc" is not found."); }
// 判断键存在 if (openwith.containskey("bmp")) // true { console.writeline("an element with key = "bmp" exists."); }
参数为其它类型
// 参数为其它类型 dictionary<int, string[]> othertype = new dictionary<int, string[]>(); othertype.add(1, "1,11,111".split(‘,‘)); othertype.add(2, "2,22,222".split(‘,‘)); console.writeline(othertype[1][2]);
参数为自定义类型
首先定义类
class doucube { public int code { get { return _code; } set { _code = value; } } privateint _code; publicstring page { get { return _page; } set { _page = value; } } privatestring _page; }
然后
// 声明并添加元素 dictionary<int, doucube> mytype = new dictionary<int, doucube>(); for (int i = 1; i <= 9; i++) { doucube element = new doucube(); element.code = i * 100; element.page = "http://www.doucube.com/" + i.tostring() + ".html"; mytype.add(i, element); }
// 遍历元素 foreach (keyvaluepair<int, doucube> kvp in mytype) { console.writeline("index {0} code:{1} page:{2}", kvp.key, kvp.value.code, kvp.value.page); }
常用属性
名称 说明
comparer 获取用于确定字典中的键是否相等的 iequalitycomparer<t>。
count 获取包含在 dictionary<tkey, tvalue> 中的键/值对的数目。
item 获取或设置与指定的键相关联的值。
keys 获取包含 dictionary<tkey, tvalue> 中的键的集合。
values 获取包含 dictionary<tkey, tvalue> 中的值的集合。
常用方法
名称 说明
add 将指定的键和值添加到字典中。
clear 从 dictionary<tkey, tvalue> 中移除所有的键和值。
containskey 确定 dictionary<tkey, tvalue> 是否包含指定的键。
containsvalue 确定 dictionary<tkey, tvalue> 是否包含特定值。
equals(object) 确定指定的 object 是否等于当前的 object。 (继承自 object。)
finalize 允许对象在“垃圾回收”回收之前尝试释放资源并执行其他清理操作。 (继承自 object。)
getenumerator 返回循环访问 dictionary<tkey, tvalue> 的枚举器。
gethashcode 用作特定类型的哈希函数。 (继承自 object。)
getobjectdata 实现 system.runtime.serialization.iserializable 接口,并返回序列化 dictionary<tkey, tvalue> 实例所需的数据。
gettype 获取当前实例的 type。 (继承自 object。)
memberwiseclone 创建当前 object 的浅表副本。 (继承自 object。)
ondeserialization 实现 system.runtime.serialization.iserializable 接口,并在完成反序列化之后引发反序列化事件。
remove 从 dictionary<tkey, tvalue> 中移除所指定的键的值。
tostring 返回表示当前对象的字符串。 (继承自 object。)
trygetvalue 获取与指定的键相关联的值。
【说明】:本文章由站长整理发布,文章内容不代表本站观点,如文中有侵权行为,请与本站客服联系(QQ:254677821)!