当前位置:首页 > C#教程 > C#高级

C# Dictionary


说明

    必须包含名空间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)!

相关教程推荐

其他课程推荐