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);
 }
  • 第2种遍历方法
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]);
  • 参数为自定义类型
    首先定义类
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]);

然后,声明并添加元素

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。
Count获取包含在 Dictionary 中的键/值对的数目。
Item获取或设置与指定的键相关联的值。
Keys获取包含 Dictionary 中的键的集合。
Values获取包含 Dictionary 中的值的集合。

常用方法

名称说明
Add将指定的键和值添加到字典中。
Clear从 Dictionary 中移除所有的键和值。
ContainsKey确定 Dictionary 是否包含指定的键。
ContainsValue确定 Dictionary 是否包含特定值。
Equals(Object)确定指定的 Object 是否等于当前的 Object。 (继承自 Object。)
Finalize允许对象在“垃圾回收”回收之前尝试释放资源并执行其他清理操作。 (继承自 Object。)
GetEnumerator返回循环访问 Dictionary 的枚举器。
GetHashCode用作特定类型的哈希函数。 (继承自 Object。)
GetObjectData实现 System.Runtime.Serialization.ISerializable 接口,并返回序列化 Dictionary 实例所需的数据。
GetType获取当前实例的 Type。 (继承自 Object。)
MemberwiseClone创建当前 Object 的浅表副本。 (继承自 Object。)
OnDeserialization实现 System.Runtime.Serialization.ISerializable 接口,并在完成反序列化之后引发反序列化事件。
Remove从 Dictionary 中移除所指定的键的值。
ToString返回表示当前对象的字符串。 (继承自 Object。)
TryGetValue获取与指定的键相关联的值。

获取字典的特殊键值

  • 获取字典的第一个键、值
    _expressionDic.Keys.First()
    _expressionDic[_expressionDic.Keys.First()];

  • 获取字典的最后一个键、值
    _expressionDic.Keys.Last()
    _expressionDic[_expressionDic.Keys.Last()];

  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值