Dictionary,字典,键值对集合。

下面的代码示例创建一个空的带有字符串键的字符串 Dictionary,并使用 Add 方法添加一些元素。该示例演示在尝试添加重复的键时 Add 方法引发ArgumentException

该示例使用 Item 属性(在 C# 中为 索引器)来检索值,演示当请求的键不存在时将引发 KeyNotFoundException,并演示与键相关联的值可被替换。

该示例演示当程序必须经常尝试字典中不存在的键值时,如何使用 TryGetValue 方法作为一种更有效的方法来检索值,它还演示如何使用ContainsKey 方法在调用 Add 方法之前测试某个键是否存在。

该示例演示如何枚举字典中的键和值,以及如何分别使用 Keys 属性和 Values 属性来单独枚举键和值。

最后,该示例演示 Remove 方法。

using System;
using System.Collections.Generic; public class Example
{
public static void Main()
{
//创建一个字典,键是字符串类型,值是字符串类型。
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"); // 如果新键已经在字典中,则添加方法将引发异常。
try
{
openWith.Add("txt", "winword.exe");
}
catch (ArgumentException)
{
Console.WriteLine("该键名已经在字典中存在");
} // 可以直接通过:字典对象名["键名称"] 访问该键对应的值。
Console.WriteLine(" value = {0}", openWith["rtf"]); // 可以通过给键重新赋值来改变键的值
openWith["rtf"] = "winword.exe";
Console.WriteLine(" key = \"rtf\", value = {0}.",openWith["rtf"]); // 如果键名在字典集合中不存在,赋值时就新建。
openWith["doc"] = "winword.exe";
Console.WriteLine(" key = \"doc\",value ={0}", openWith["doc"]); // 如果请求的键不在字典中,则抛出异常。
try
{
Console.WriteLine("For key = \"tif\", value = {0}.",openWith["tif"]);
}
catch (KeyNotFoundException)
{
Console.WriteLine("Key = \"tif\" is not found.");
} //当一个程序经常要获取键对应的值时,用TryGetValue获取与指定的键相关联的值效率高。
string value = "";
if (openWith.TryGetValue("txt", out value))
{
Console.WriteLine("For key = \"txt\", value = {0}.", value);
}
else
{
Console.WriteLine("Key = \"tif\" is not found.");
} // 用ContainsKey测试是否包含指定的键
if (!openWith.ContainsKey("ht"))
{
Console.WriteLine("不包含,我想创建");
openWith.Add("ht", "hypertrm.exe");
Console.WriteLine("Value added for key = \"ht\": {0}",openWith["ht"]);
} //当使用foreach遍历字典中元素时,元素检索KeyValuePair对象
foreach (KeyValuePair<string, string> kvp in openWith) {
Console.WriteLine("Key = {0}, Value = {1}",
kvp.Key, kvp.Value);
}
//普通遍历
//foreach (var kvp in openWith)
//{
// Console.WriteLine("Key = {0}, Value = {1}",
// kvp.Key, kvp.Value);
//} //要获得单独的值,使用值属性
Dictionary<string, string>.ValueCollection valueColl = openWith.Values;
Console.WriteLine();//输出空行
//遍历输出,注意valueColl是强类型,要使用匹配的类型。 使用var未定义类型也可以输出。
foreach (string s in valueColl)
{
Console.WriteLine("Value = {0}", s);
} // 要获得单独的键,使用键属性
Dictionary<string, string>.KeyCollection keyColl =openWith.Keys;
Console.WriteLine();
//遍历输出
foreach (string s in keyColl)
{
Console.WriteLine("Key = {0}", s);
} // 使用Remove方法移除键值对
Console.WriteLine("\nRemove(\"doc\")");
openWith.Remove("doc"); if (!openWith.ContainsKey("doc"))
{
Console.WriteLine("Key \"doc\" is not found.");
} Console.ReadKey();
}
}

  

 
System.Object 
  System.Collections.Generic.Dictionary

Dictionary摘抄的更多相关文章

  1. 年度巨献-WPF项目开发过程中WPF小知识点汇总(原创+摘抄)

    WPF中Style的使用 Styel在英文中解释为”样式“,在Web开发中,css为层叠样式表,自从.net3.0推出WPF以来,WPF也有样式一说,通过设置样式,使其WPF控件外观更加美化同时减少了 ...

  2. .Net 中HashTable,HashMap 和 Dictionary<key,value> 和List<T>和DataTable的比较

    参考资料 http://www.cnblogs.com/MichaelYin/archive/2011/02/14/1954724.html http://zhidao.baidu.com/link? ...

  3. C#数组,List,Dictionary的相互转换

    本篇文章会向大家实例讲述以下内容: 将数组转换为List 将List转换为数组 将数组转换为Dictionary 将Dictionary 转换为数组 将List转换为Dictionary 将Dicti ...

  4. ASP.NET Aries JSAPI 文档说明:AR.DataGrid、AR.Dictionary

    AR.Global 文档 1:对象或属性: 名称 类型 说明 DG 对象 DataGrid操作对象 //datagrid集合,根据ID取出DataGrid对象,将Json当数组用. Items: ne ...

  5. WebAPI接口返回ArrayList包含Dictionary对象正确解析

    一.问题提出 为了减少流量,将key-value(键值对)直接输出到Dictionary<string, string>,接口返回结果如下: 其中{}里面内容如下: 上图显示600是键,4 ...

  6. Linq在Array,List,Dictionary中的应用

    Linq在Array,List,Dictionary中的应用 今天在实际工作中需要对array,list,dictionary进行排序,试一试linq,发现非常好用,代码如下: using Syste ...

  7. python之最强王者(8)——字典(dictionary)

    1.Python 字典(Dictionary) 字典是另一种可变容器模型,且可存储任意类型对象. 字典的每个键值(key=>value)对用冒号(:)分割,每个对之间用逗号(,)分割,整个字典包 ...

  8. Swift3 - String 字符串、Array 数组、Dictionary 字典的使用

    Swift相关知识,本随笔为 字符串.数组.字典的简单使用,有理解.使用错误的地方望能指正. ///************************************************** ...

  9. [LeetCode] Alien Dictionary 另类字典

    There is a new alien language which uses the latin alphabet. However, the order among letters are un ...

随机推荐

  1. 相克军_Oracle体系_随堂笔记007-PGA

    实际工作中,Oracle中有两个很重要:Server Process 和 PGA.   PGA内存作用和构成   1.PGA作用 2.PGA构成 1)private SQL area   2)Sess ...

  2. ACM-东北大学程序设计竞赛-网络赛(2016.04.16)

    Problem: A Time limit: 1s    Mem limit: 64 MB    AC/Submission: 0/0    Discuss Back   Ranklist  Stat ...

  3. C#枚举类型的常用操作总结

    枚举类型是定义了一组"符号名称/值"配对.枚举类型是强类型的.每个枚举类型都是从system.Enum派生,又从system.ValueType派生,而system.ValueTy ...

  4. 三步将Node应用部署到Heroku上

    Heroku是一个提供快速部署服务的云平台.支持Node,Ruby,Java,PHP,Python,Go多种语言,今天体验了下,简直不要太爽.下面简单的介绍一下. 首先还是要注册一个账号:https: ...

  5. TCP三次握手,四次挥手

    前言 在面试的过程中,TCP的传输协议经常会出现.以前我参加面试的过程中就被问到过,现在轮到我面试其他人的时候,我也会问一些相关的问题.作为一名开发者,无论使用什么样的开发语言,最基本的网络知识一定要 ...

  6. Hibernate —— HQL、QBC检索方式

    一.HQL 检索方式 以双向的一对多来测试 HQL 检索方式.以 Department 和 Employee 为例. 建表语句: CREATE TABLE department ( dept_id ) ...

  7. 多步骤多分步的组件StepJump

    最近的工作在做一个多步骤多分步的表单页面,这个多步骤多分步的意思是说这个页面的业务是分多个步骤完成的,每个步骤可能又分多个小步骤来处理,大步骤之间,以及小步骤之间都是一种顺序发生的业务关系.起初以为这 ...

  8. 五小步让VS Code支持AngularJS智能提示

    本文想通过配置VS Code来实现对AngularJS的智能提示.在一般的情况下对于在HTML页面是支持提示的.但是在js页面就不是很友好,它是记忆你之前的输入,要是之后有重复的输入,VS Code会 ...

  9. Nancy之基于Nancy.Hosting.Self的小Demo

    继昨天的Nancy之基于Nancy.Hosting.Aspnet的小Demo后, 今天来做个基于Nancy.Hosting.Self的小Demo. 关于Self Hosting Nancy,官方文档的 ...

  10. processModel与ASP.NET进程模型

    配置 Microsoft Internet 信息服务 (IIS) Web 服务器上的 ASP.NET 进程模型设置.其作用是配置IIS或IIS中的应用程序池(IIS7及以后版本)的安全性,性能,健壮性 ...