首页 ┆ 网站地图 ┆ 在线留言 ┆ 游戏资讯 ┆ 资源下载 ┆ 端午节祝福 ┆ 迅雷在线影视 ┆淘宝手机在线充值 ┆淘宝游戏点卡充值 
设为首页
加入收藏
联系我们
高级搜索
您当前的位置: 主页>NET专区>C#语言>Dictionary泛型集合操作使用事例
Dictionary泛型集合操作使用事例
来源: 发布时间:2008-10-31 发布人: 浏览: 人次   字体: [ ]  
         泛型最常见的用途是泛型集合,在命名空间System.Collections.Generic 中包含了一些基于泛型的集合类,使用泛型集合类可以提供更高的类型安全性,还有更高的性能,避免了非泛型集合的重复的装箱和拆箱。
    很多非泛型集合类都有对应的泛型集合类,下面是常用的非泛型集合类以及对应的泛型集合类:
非泛型集合类 泛型集合类
ArrayList List
HashTable DIctionary
Queue Queue
Stack Stack
SortedList SortedList

    我们用的比较多的非泛型集合类主要有 ArrayList类 和 HashTable类。我们经常用HashTable 来存储将要写入到数据库或者返回的信息,在这之间要不断的进行类型的转化,增加了系统装箱和拆箱的负担,如果我们操纵的数据类型相对确定的化  用 Dictionary 集合类来存储数据就方便多了,例如我们需要在电子商务网站中存储用户的购物车信息( 商品名,对应的商品个数)时,完全可以用 Dictionary 来存储购物车信息,而不需要任何的类型转化。

    下面是简单的例子,包括声明,填充键值对,移除键值对,遍历键值对

    Dictionary<stringstring> myDic = new Dictionary<stringstring>();
    myDic.Add(
"aaa""111"
);
    myDic.Add(
"bbb""222"
);
    myDic.Add(
"ccc""333"
);
    myDic.Add(
"ddd""444"
);
    
//如果添加已经存在的键,add方法会抛出异常

    try
    
{
        myDic.Add(
"ddd","ddd"
);
    }

    
catch (ArgumentException ex)
    
{
        Console.WriteLine(
"此键已经存在:" +
 ex.Message);
    }

    
//解决add()异常的方法是用ContainsKey()方法来判断键是否存在
    if (!myDic.ContainsKey("ddd"))
    
{
        myDic.Add(
"ddd""ddd"
);
    }

    
else
    
{
        Console.WriteLine(
"此键已经存在:"
);
    
    }

    
    
//而使用索引器来负值时,如果建已经存在,就会修改已有的键的键值,而不会抛出异常
    myDic ["ddd"]="ddd";
    myDic[
"eee"= "555"
;
    
    
//使用索引器来取值时,如果键不存在就会引发异常

    try
    
{
        Console.WriteLine(
"不存在的键\"fff\"的键值为:" + myDic["fff"
]);
    }

    
catch (KeyNotFoundException ex)
    
{
        Console.WriteLine(
"没有找到键引发异常:" +
 ex.Message);
    }

    
//解决上面的异常的方法是使用ContarnsKey() 来判断时候存在键,如果经常要取健值得化最好用 TryGetValue方法来获取集合中的对应键值
    string value = "";
    
if (myDic.TryGetValue("fff"out
 value))
    
{
        Console.WriteLine(
"不存在的键\"fff\"的键值为:" +
 value );
    }

    
else
    
{     
        Console.WriteLine(
"没有找到对应键的键值"
); 
    }

    
    
//下面用foreach 来遍历键值对
    
//泛型结构体 用来存储健值对

    foreach (KeyValuePair<stringstring> kvp in myDic)
    
{
        Console.WriteLine(
"key={0},value={1}"
, kvp.Key, kvp.Value);
    }

    
//获取值得集合
    foreach (string s in myDic.Values)
    
{
        Console.WriteLine(
"value={0}"
, s);
    }

    
//获取值得另一种方式
    Dictionary<stringstring>.ValueCollection values = myDic.Values;
    
foreach (string s in
 values)
    
{
        Console.WriteLine(
"value={0}"
, s);
    }

常用的属性和方法如下:

 

 

常用属性

属性说明

 

Comparer

获取用于确定字典中的键是否相等的 IEqualityComparer

 

Count

获取包含在 Dictionary 中的键/值对的数目。

 

Item

获取或设置与指定的键相关联的值。

 

Keys

获取包含 Dictionary 中的键的集合。

 

Values

获取包含 Dictionary 中的值的集合。

  常用的方法 方法说明

 

Add

将指定的键和值添加到字典中。

 

Clear

Dictionary 中移除所有的键和值。


ContainsKey

确定 Dictionary 是否包含指定的键。

 

ContainsValue

确定 Dictionary 是否包含特定值。

 

Equals 

已重载。 确定两个 Object 实例是否相等。 (从 Object 继承。)

 

GetEnumerator

返回循环访问 Dictionary 的枚举数。

 

GetHashCode 

用作特定类型的哈希函数。GetHashCode 适合在哈希算法和数据结构(如哈希表)中使用。 (从 Object 继承。)

 

GetObjectData

实现 System.Runtime.Serialization.ISerializable 接口,并返回序列化 Dictionary 实例所需的数据。

 

GetType 

获取当前实例的 Type。 (从 Object 继承。)

 

OnDeserialization

实现 System.Runtime.Serialization.ISerializable 接口,并在完成反序列化之后引发反序列化事件。

 

ReferenceEquals 

确定指定的 Object 实例是否是相同的实例。 (从 Object 继承。)

 

Remove

Dictionary 中移除所指定的键的值。

 

ToString 

返回表示当前 Object String。 (从 Object 继承。)

 

TryGetValue

获取与指定的键相关联的值。


相 关 文 章   发布商链接
·如何用C#获取IP地址、子网掩码和网关...
·有助快速理解C#委托和事件之间关系的...
·C#调用C++的函数实现串口通信读写操...
·C#生成XML文件代码一例
·利用C#实现获得指定网页的源代码方法
·什么是抽象类?什么是接口?两者有什么...
·C#代码,Delphi和js脚本写的模拟显示...
·C#以度°分′秒″格式实现经纬度加减...
·最为经典的C#操作文件的方法大全
·C#实现把多个文件写入到一个文件中去...
 §最新评论:(评论内容只代表网友观点,与本站立场无关!)
网名: 验证码:  【所有评论】【↑返回顶部
评 分: 12 345
评论内容:(不能超过500字,请自觉遵守互联网相关政策法规。[按 Ctrl+Enter 可直接提交]
注意:请勿在本站发布政治话题、色情及违反法律的内容。
IT知道网 声明:刊登此文章是为了传递更多信息,文章内容仅供参考,转载请注明出处。
推 荐 文 章
·最为经典的C#操作文件的方法...
·有助快速理解C#委托和事件之...
·C#泛型学习笔记总结
·c#语言从dbf数据库提取数据并
·C#编写控制线程的运行和线程...
·怎样在C#中删除只读文件及其...
·C#函数中返回多个值的两种方...
·如何在C#中插入照片到Excel文
·如何在c#中获取事件注册的方...
·C#对timer类的使用操作代码
·什么是泛型?泛型的一些概述
·C#如何从文本文件读取信息并...
·如何在c#中去掉字符串中的回...
·如何使用C#获取IIS服务器版本...
·什么是泛型编程思想?及其简...
热 门 文 章
·C#如何获取文件路径中的文件...
·c#中收发邮件处理代码(POP3,...
·浅谈接口和抽象类的区别,加...
·什么是c#深拷贝与浅拷贝及其...
·C#语言实现创建、删除和移动...
·C#中关于四舍五入函数的讨论...
·c#中的ArrayList属性祥解及其...
·快速进行List排序的通用方法...
·C#对timer类的使用操作代码
·C#如何从文本文件读取信息并...
·C#语言实现从XML文件导出数据...
·用C#编写ActiveX控件代码实例
·如何在c#中去掉字符串中的回...
·String.Split 方法使用及其代...
·C#语言绘制实时曲线图代码实...
网站首页 - 关于本站 - 加入收藏 - 网站地图 - 友情连接 - 在线留言 - 联系我们 - 返回顶部
Copyright © 2007 IT知道网.[冀ICP备07026896号]. All Rights Reserved .