C#中的Dictionary字典类介绍

关键字:C# Dictionary 字典 
作者:txw1958
原文:http://www.cnblogs.com/txw1958/archive/2012/11/07/csharp-dictionary.html

说明
    必须包含名空间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; } } private int _Code;
        public string Page { get { return _Page; } set { _Page = value; } } private string _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         获取与指定的键相关联的值。

你可能也感兴趣

基础接口高级接口微信支付产品服务
微信公众平台开发入门教程
微信公众平台开发—天气预报
微信公众平台开发—小黄鸡
微信公众平台开发—人脸识别
微信公众平台开发—百度地图
微信公众平台开发—笑话
微信公众平台开发—在线点歌
微信公众平台开发—附近查询
微信公众平台开发—快递物流
微信公众平台开发—一键关注
你的服务器没有正确响应Token验证
微信公众平台开发—自定义菜单
微信公众平台开发—OAuth2.0网页授权
微信公众平台开发—发送客服消息
微信公众平台开发—语音识别
微信公众平台开发—用户基本信息
微信公众平台开发—上传下载多媒体文件
微信公众平台开发—带参数二维码
微信公众平台开发—获取用户地理位置
微信公众平台开发—获取关注者列表
微信公众平台开发—用户分组接口
微信公众平台开发—高级群发接口
微信支付开发—微信支付URL配置
微信支付开发—微信支付账号体系
微信支付开发—JS API支付
微信支付开发—交易通知
微信支付开发—订单查询
微信支付开发—发货通知
微信支付开发—告警通知
微信支付开发—维权通知
微信小店开发-效果图


微信公众平台应用开发实战教程
微信公众平台高级接口开发教程
微信公众平台开发咨询指导服务
《微信公众平台开发最佳实践》



最佳实践读者服务QQ群188280503
微信开发技术交流QQ群249410807
微信付费开发联系QQ 1354386063


《微信公众平台开发最佳实践》

由方倍工作室编写,系统完整地介绍微信公众平台基础接口、自定义菜单、高级接口、微信支付、分享转发等所有相关技术,包含天气预报、智能快递查询、中英翻译、空气质量、股票行情、苹果产品信息查询、历史上的今天、附近搜索、英语四六级查询、笑话、星座运势、周公解梦、姓名测试、人脸识别夫妻相、在线点歌、一站到底在线答题、聊天机器人、会员卡、预约订单、产品微相册、大转盘、刮刮卡、地图导航、智能问答、在线客服、广告效果统计、表情飘落、QQ表情和Emoji表情、微信版本及手机系统、发送给朋友与分享到朋友圈、微社区等功能,已成功帮助无数人进入微信开发领域。

购买地址

    

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值