C#中的Dictionary字典类介绍(转载)

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"]);

 

    //遍历keyforeach (string key in openWith.Keys){Console.WriteLine("Key = {0}", key);}

 

复制代码
    //遍历valueforeach (string value in openWith.Values){Console.WriteLine("value = {0}", value);}//遍历value, Second MethodDictionary<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         获取与指定的键相关联的值。

转载于:https://www.cnblogs.com/khfang/p/6109581.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/542152.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

求阶乘的第一个非零数字_查找数字阶乘中的尾随零

求阶乘的第一个非零数字Problem statement: 问题陈述&#xff1a; Find the number of trailing zeros in n! (Where, n is the given input). 在n中找到尾随零的数目&#xff01; (其中&#xff0c; n是给定的输入)。 Solution: 解&#xff1a; Computing a factorial is o…

高速缓存dns

1. DNS&#xff1a; Domain Name System&#xff0c;域名系统。 万维网上作为域名和IP地址相互映射的一个分布式数据库&#xff0c;能够使用户更方便的访问互联网。他主要负责把域名和IP的相互转换&#xff0c;DNS运行与TCP|UDP的53端口上。 2. 高速缓存DNS&#xff1a;DNS服务…

python log日志级别_python – 日志记录:如何为处理程序设置最大日志级别

您可以向文件处理程序添加过滤器.这样,您可以将特定级别重定向到不同的文件.import loggingclass LevelFilter(logging.Filter):def __init__(self, low, high):self._low lowself._high highlogging.Filter.__init__(self)def filter(self, record):if self._low < recor…

Python Pandas –合并,联接和串联

There are three main ways to combine dataFrames i.e., merging, joining and concatenating. The following examples will illustrate merging, joining and concatenation. 组合dataFrames的主要方法有三种&#xff0c;即合并&#xff0c;联接和串联 。 以下示例将说明合并…

Apache服务配置

1. apache 企业中常用的web服务。用来提供http&#xff1a;//&#xff08;超文本传输协议&#xff09; 基础信息&#xff1a; 主配置目录&#xff1a; /etc/httpd/conf 主配置文件&#xff1a; /etc/httpd/conf/httpd.conf 子配置目录&#xff1a; /etc/httpd/conf.d/ 子配置文…

git 怎么查看合并过来哪些代码_git整理纷乱的历史合并记录

https://github.com/Epix37/Hearthstone-Deck-Tracker以上面版本库的master分支为例父节点1SHA-1: a21142968282ae49720cf30a0f18290b2ce74b3a* remove hotkey from config if action could not be found, fix hotkey menu item name父节点2SHA-1: 86a824e8f46005db91f334dfc57…

如何安装Genymotion虚拟机以及Genmotion的eclipse插件

---内容开始--- - 首先去genymotion的官网去下载其安装文件 资源下载 Genymotion官网必须注册一个账号这个账号安装之后还有用的&#xff0c;用户名最好用网易126邮箱注册----我下载的是2.8.0的版本(注&#xff1a;注册前先开个代理服务器不然页面打不开下载时最好用迅雷下载这…

java system类_Java System类mapLibraryName()方法及示例

java system类系统类mapLibraryName()方法 (System class mapLibraryName() method) mapLibraryName() method is available in java.lang package. mapLibraryName()方法在java.lang包中可用。 mapLibraryName() method is used to map a given library name into a platform-…

squid服务配置(正向、反向代理)

代理&#xff1a; 就是代理网络用户去取得网络信息。 Squid是一种用来缓冲Internet数据的软件。安装Squid服务实现代理缓存服务器功能。 正向代理&#xff1a;意思是一个位于客户端和原始服务器之间的服务器&#xff0c;为了从原始服务器取得内容&#xff0c;客户端向代理发送一…

家谱整站源码php_mysql家谱表查询某人所有后代

CREATE TABLE people (id INT(11) NOT NULL,name VARCHAR(50) NULL DEFAULT NULL,pid INT(11) NOT NULL DEFAULT 0,PRIMARY KEY (id));CREATE DEFINERroot% PROCEDURE getChildren(IN parentId INT)LANGUAGE SQLNOT DETERMINISTICCONTAINS SQLSQL SECURITY DEFINERCOMMENT 获取…

React 入门学习笔记2

摘自阮一峰&#xff1a;React入门实例教程&#xff0c;转载请注明出处。 一、获取真实的DOM节点 组件并不是真实的 DOM 节点&#xff0c;而是存在于内存之中的一种数据结构&#xff0c;叫做虚拟 DOM &#xff08;virtual DOM&#xff09;。只有当它插入文档以后&#xff0c;才会…

c语言getchar函数_C语言中带有示例的getchar()函数

c语言getchar函数C语言中的getchar()函数 (getchar() function in C) The getchar() function is defined in the <stdio.h> header file. getchar()函数在<stdio.h>头文件中定义。 Prototype: 原型&#xff1a; int getchar(void);Parameters: FILE *filename(f…

python及pycharm

1.python简介&#xff1a; Python是一种计算机程序设计语言。是一种动态的、面向对象的脚本语言&#xff0c;最初被设计用于编写自动化脚本(shell)&#xff0c;随着版本的不断更新和语言新功能的添加&#xff0c;越来越多被用于独立的、大型项目的开发。 python最重要的功能&am…

anaconda如何更改环境配置_手把手教新手安装Anaconda配置开发环境

Anaconda是针对Python的集成环境&#xff0c;它已经成为全球数千万数据科学从业人员必备的开发工具&#xff0c;帮助人们有效地解决数据科学和机器学习相关地问题。如果你想从事数据科学和机器学习的工作&#xff0c;可以从本文开始&#xff0c;了解一下如何安装Anaconda。1. 初…

详解摘要认证

1. 什么是摘要认证摘要认证与基础认证的工作原理很相似&#xff0c;用户先发出一个没有认证证书的请求&#xff0c;Web服务器回复一个带有WWW-Authenticate头的响应&#xff0c;指明访问所请求的资源需要证书。但是和基础认证发送以Base 64编码的用户名和密码不同&#xff0c;在…

Python的基础知识

1.注释&#xff1a; #单行注释ctrl / 批量注释&#xff0c;选中需要注释的所有行ctrl / 批量取消注释&#xff0c;选中已经被注释的所有行 块注释&#xff1a;上下各三个双引号的部分全部被注释 “”“ hello haha ”“”2.变量&#xff1a; 变量命名的规则&#xff1a; …

树莓派该文件名_树莓派:文本编辑器与文件

GNU nano是Unix系统下一款常用的文本编辑器&#xff0c;以简单易用著称。与之相比&#xff0c;功能更强大的Vi和Emacs编辑器&#xff0c;学习曲线比nano陡峭很多。由于nano对于一般的文本编辑来说已经足够&#xff0c;所以我想简单介绍一下&#xff0c;以便于更好入门。基本使用…

Java SimpleTimeZone setStartYear()方法与示例

SimpleTimeZone类setStartYear()方法 (SimpleTimeZone Class setStartYear() method) setStartYear() method is available in java.util package. setStartYear()方法在java.util包中可用。 setStartYear() method is used to set the DST (Daylight Savings Time) starting y…

报表在IBM AIX系统下resin部署

&#xfeff;&#xfeff;报表是用java开发的&#xff0c;具有良好的跨平台性。不仅可以应用在windows、linux、操作系统&#xff0c;还可以应用在AIX等等的unix操作系统。在各种操作系统上部署过程有一些差别。下面说一下在AIX操作系统的部署的步骤。 1. 首先&#xff0c;下载…

python——if语句、逻辑运算符号

1.if条件判断语句&#xff1a; if 要判断的条件(True):条件成立的时候&#xff0c;要做的事情 elif 要判断的条件(True):.... elif 要判断的条件(True):.... else:条件不成立的时候要做的事情示例&#xff1a; 判断学生分数等级&#xff1a; 100——90&#xff08;包括90&…