C#中Dictionary泛型集合7种常见的用法
作者:jae 发布时间:2021-08-07 04:47:17
标签:C#,Dictionary,泛型,集合
要使用Dictionary集合,需要导入C#泛型命名空间
System.Collections.Generic(程序集:mscorlib)
Dictionary的描述
1、从一组键(Key)到一组值(Value)的映射,每一个添加项都是由一个值及其相关连的键组成
2、任何键都必须是唯一的
3、键不能为空引用null(VB中的Nothing),若值为引用类型,则可以为空值
4、Key和Value可以是任何类型(string,int,custom class 等)
Dictionary常用用法:以 key 的类型为 int , value的类型为string 为例
1、创建及初始化
Dictionary<int,string>myDictionary=newDictionary<int,string>();
2、添加元素
myDictionary.Add(1,"C#");
myDictionary.Add(2,"C++");
myDictionary.Add(3,"ASP.NET");
myDictionary.Add(4,"MVC");
3、通过Key查找元素
if(myDictionary.ContainsKey(1))
{
Console.WriteLine("Key:{0},Value:{1}","1", myDictionary[1]);
}
4、通过KeyValuePair遍历元素
foreach(KeyValuePair<int,string>kvp in myDictionary)
{
Console.WriteLine("Key = {0}, Value = {1}",kvp.Key, kvp.Value);
}
5、仅遍历键 Keys 属性
Dictionary<int,string>.KeyCollection keyCol=myDictionary.Keys;
foreach(intkeyinkeyCol)
{
Console.WriteLine("Key = {0}", key);
}
6、仅遍历值 Valus属性
Dictionary<int,string>.ValueCollection valueCol=myDictionary.Values;
foreach(stringvalueinvalueCol)
{
Console.WriteLine("Value = {0}", value);
}
7、通过Remove方法移除指定的键值
myDictionary.Remove(1);
if(myDictionary.ContainsKey(1))
{
Console.WriteLine("Key:{0},Value:{1}","1", myDictionary[1]);
}
else
{
Console.WriteLine("不存在 Key : 1");
}
其它常见属性和方法的说明:
Comparer: | 获取用于确定字典中的键是否相等的 IEqualityComparer。 |
Count: | 获取包含在 Dictionary中的键/值对的数目。 |
Item: | 获取或设置与指定的键相关联的值。 |
Keys: | 获取包含 Dictionary中的键的集合。 |
Values: | 获取包含 Dictionary中的值的集合。 |
Add: | 将指定的键和值添加到字典中。 |
Clear: | 从 Dictionary中移除所有的键和值。 |
ContainsKey: | 确定 Dictionary是否包含指定的键。 |
ContainsValue: | 确定 Dictionary是否包含特定值。 |
GetEnumerator: | 返回循环访问 Dictionary的枚举数。 |
GetType: | 获取当前实例的 Type。 (从 Object 继承。) |
Remove: | 从 Dictionary中移除所指定的键的值。 |
ToString: | 返回表示当前 Object的 String。 (从 Object 继承。) |
TryGetValue: | 获取与指定的键相关联的值。 |
0
投稿
猜你喜欢
- 云计算、大数据地快速发展催生了不少热门的应用及工具。作为老牌语言Java,其生态圈也出来了一些有关云服务、监控、文档分享方面的工具。本文总结
- 接触Spring快半年了,前段时间刚用Spring4+S2H4做完了自己的毕设,但是很明显感觉对Spring尤其是IOC容器的实现原理理解的
- 关于DocumentCompleted事件,MSDN给出的解释是在文档加载完毕后执行,但是在我的程序中DocumentCompleted却被
- 一、概述RocketMQ主要提供了两种消费模式:集群消费以及广播消费。我们只需要在定义消费者的时候通过setMessageModel(Mes
- 本文实例讲述了C#中WinForm跨线程访问控件的实现方法,分享给大家供大家参考。具体实现方法如下:1、跨线程访问控件委托和类的定义usin
- 前言本文的记录如何用CustomPaint、GestureDetector实现一个进度条控件。首先需要说明的是 flutter Materi
- 什么是Mapping同样的,我们先讲基本概念,什么是mapping,上节给大家简要的举了一个例子,还有印象吗?mapping是es中一个比较
- 使用wait()与notify()实现线程间协作1. wait()与notify()/notifyAll()调用sleep()和yield(
- 本文实例讲述了C#设置页面单位和缩放的方法。分享给大家供大家参考。具体如下:using System;using System.Collec
- 从一个Stream中过滤null值复习一个Stream 包含 null 数据的例子.Java8Examples.javapackage co
- 表单提交这个方法是挺方便的,但在java来说就显得有些麻烦了,怎么个麻烦呢,就是当你字段多的时候,你就得一个一个的获取其对应的值,这样代码量
- 当我们需要与 NIO Channel 进行交互时, 我们就需要使用到 NIO Buffer, 即数据从 Buffer读取到 Channel
- WinForm中的键盘按键有KeyDown,KeyPress和KeyUp事件。那么它们的顺序以及区别在哪里呢?本文就此作出如下分析:一、顺序
- 常需要对list进行排序,小到List<String>,大到对自定义的类进行排序。不需要自行归并或堆排序。简单实现一个接口即可。
- 调试的时候,在循环里增加条件判断,可以极大的提高效率,心情也能愉悦。以下介绍下IDEA使用条件【Condition】断点的方法1、编写一段样
- Reflections通过扫描classpath,索引元数据,并且允许在运行时查询这些元数据。使用Reflections可以很轻松的获取以下
- Java StringWriter流的使用一、StringWriter流定义API说明:在字符串缓冲区中收集输出的字符流,可用于构造字符串,
- 本文实例讲述了C#实现读取指定盘符硬盘序列号的方法。分享给大家供大家参考,具体如下:using System;using System.IO
- 最近自己写了个小爬虫,里面用到了多线程技术,忽然发现对此技术竟然有些陌生了,于是乎开始疯狂的去问度娘,在此记录下来,以便自己和各位小伙伴们学
- 回顾Tomcat8打法先回顾下之前Tomcat789的打法这里先抛开 7 8之间的区别, 在8中,最后add到filterchain的都是一