C# Dictionary类,确实有点东西

news2024/9/23 3:20:25

前言:

今天这篇文章是对Dictionary类的学习,Dictionary类是一个字典序,我们在编程中经常用到,它算是enum枚举类型和list类型的结合,是以键值对的形式去存储值的,那么你会这个知识点不,不会那么今天这篇文章我们一起来学习一下吧,创作不易,大家顺便点点赞吧,你的点赞收藏关注,是我写文章的动力,栓Q啦。

20190724912442_FIJlny.jpg

Dictionary类注意点

  1. 必须包含名空间System.Collection.Generic
  2. Dictionary里面的每一个元素都是一个键值对(由二个元素组成:键和值)
  3. 键必须是唯一的,而值不需要唯一的
  4. 键和值都可以是任何类型(比如:string, int, 自定义类型,等等)
  5. 通过一个键读取一个值的时间是接近O(1)
  6. 键值对之间的偏序可以不定义

C# Get和Set (1).png

Dictionary类构造函数

构造函数
Dictionary<TKey,TValue>()
初始化 Dictionary<TKey,TValue> 类的新实例,该实例为空且具有默认的初始容量,并使用键类型的默认相等比较器
Dictionary<TKey,TValue>(IDictionary<TKey,TValue>)
初始化 Dictionary<TKey,TValue> 类的新实例,该实例包含从指定的 IDictionary<TKey,TValue> 中复制的元素并为键类型使用默认的相等比较器。
Dictionary<TKey,TValue>(IDictionary<TKey,TValue>, IEqualityComparer)
初始化 Dictionary<TKey,TValue> 类的新实例,该实例包含从指定的 IDictionary<TKey,TValue> 中复制的元素并使用指定的 IEqualityComparer。
Dictionary<TKey,TValue>(IEqualityComparer)
初始化 Dictionary<TKey,TValue> 类的新实例,该实例为空,具有默认的初始容量并使用指定的 IEqualityComparer。
Dictionary<TKey,TValue>(Int32)
初始化 Dictionary<TKey,TValue> 类的新实例,该实例为空且具有指定的初始容量,并为键类型使用默认的相等比较器。
Dictionary<TKey,TValue>(Int32, IEqualityComparer)
初始化 Dictionary<TKey,TValue> 类的新实例,该实例为空,具有指定的初始容量并使用指定的 IEqualityComparer。
Dictionary<TKey,TValue>(SerializationInfo, StreamingContext)
用序列化数据初始化 Dictionary<TKey,TValue> 类的新实例。

Dictionary类方法和属性

属性
Comparer
获取用于确定字典中的键是否相等的 IEqualityComparer。
Count
获取包含在 Dictionary<TKey,TValue> 中的键/值对的数目。
Item[TKey]
获取或设置与指定的键关联的值。
Keys
获得一个包含 Dictionary<TKey,TValue> 中的键的集合。
Values
获得一个包含 Dictionary<TKey,TValue> 中的值的集合。
方法
Add(TKey, TValue)
将指定的键和值添加到字典中。
Clear()
将所有键和值从 Dictionary<TKey,TValue> 中移除。
ContainsKey(TKey)
确定是否 Dictionary<TKey,TValue> 包含指定键。
ContainsValue(TValue)
确定 Dictionary<TKey,TValue> 是否包含特定值。
Equals(Object)
确定指定对象是否等于当前对象(继承自 Object)
GetEnumerator()
返回循环访问 Dictionary<TKey,TValue> 的枚举数。
GetHashCode()
作为默认哈希函数。(继承自 Object)
GetObjectData(SerializationInfo, StreamingContext)
实现 ISerializable 接口,并返回序列化 Dictionary<TKey,TValue> 实例所需的数据。
GetType()
获取当前实例的 Type。(继承自 Object)
MemberwiseClone()
创建当前 Object 的浅表副本。(继承自 Object)OnDeserialization(Object)
实现 ISerializable 接口,并在完成反序列化之后引发反序列化事件。
Remove(TKey)
从 Dictionary<TKey,TValue> 中移除所指定的键的值。
ToString()
返回表示当前对象的字符串。(继承自 Object)
TryGetValue(TKey, TValue)
获取与指定键关联的值。

简单示例

C# 中使用字典Dictionary来存储键值对的数据。创建字典时需要定义键值对的类型,再添加字典元素时需要符合定义的键值对类型。

1. 创建一个字典

例如,创建一个键值都是字符串类型的字典,里面的类型是不指定的。

Dictionary<string, string> EmployeeList = new Dictionary<string, string>();
Dictionary<int, string> EmployeeList = new Dictionary<int, string>();
Dictionary<int, double> EmployeeList = new Dictionary<string, double>();
2. 添加元素到字典

使用Add 方法添加元素

    EmployeeList.Add("Mahesh Chand", "Programmer");
    EmployeeList.Add("Praveen Kumar", "Project Manager");
    EmployeeList.Add("Raj Kumar", "Architect");
    EmployeeList.Add("Nipun Tomar", "Asst. Project Manager");
    EmployeeList.Add("Dinesh Beniwal", "Manager");

类似可以创建其它类型的字典,通过Add方法添加元素。

Dictionary<string, int> AuthorList = new Dictionary<string, int>();

AuthorList.Add("Mahesh Chand", 35);
AuthorList.Add("Mike Gold", 25);
AuthorList.Add("Praveen Kumar", 29);
AuthorList.Add("Raj Beniwal", 21);
AuthorList.Add("Dinesh Beniwal", 84);

Dictionary<string, float> PriceList = new Dictionary<string, float>(3);
PriceList.Add("Tea", 3.25f);
PriceList.Add("Juice", 2.76f);
PriceList.Add("Milk", 1.15f);

123456789101112
3. 检索键值

使用KeyValuePair 检索键和值

foreach (KeyValuePair<string,string> kv in EmployeeList)
{

    Console.WriteLine($"键:{kv.Key} -> 值: {kv.Value}");

 }
//检索键:
foreach (var k in EmployeeList.Keys)
{
    Console.WriteLine(k);
}
//检索值:
foreach (var v in EmployeeList.Values)
 {
    Console.WriteLine(v);
 }
4. 修改字典中某个元素的值
     //修改前
    Console.WriteLine(EmployeeList["Mahesh Chand"]);
    EmployeeList["Mahesh Chand"] = "ModfiyValue";
    
    //修改后
    Console.WriteLine(EmployeeList["Mahesh Chand"]);

字典名称[“键名”] = 要修改的值

5. 字典中常用方法

add, remove, find(ContainsKey,ContainsValue)

Add方法用于添加元素,上面已经演示过。
Remove 用于删除元素
EmployeeList.Remove(“Mahesh Chand”);

查询键是否存在,值是否存在字典中

if(EmployeeList.ContainsKey("Mahesh Chand"))
{
     Console.WriteLine("包含键 Mahesh Chand");
} 

if (!EmployeeList.ContainsValue("CEO"))
{
      Console.WriteLine("CEO NOT found");
}

总结:

这篇文章比较简单,只是简单的学习一下,对它有更多的认识,在有需求的时候最起码有路子,虽然很简单,但是也是可以学到东西的,我们学习了新的知识,对我们的知识储备及技术又有新的一点点的进步,C#的技术就是先简单再难嘛,积少成多之后才会成长才会进步,我们要不断的学习不断的探索,才能有学习的动力,才会有学习的欲望,创作不易,点赞评论收藏关注,嘿嘿,不喜勿喷!!!!

20200817629544_bgKxDz.jpg

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

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

相关文章

csapp datalab

知识点总结 1. 逻辑运算符关系 and&#xff08;与&#xff09;、or&#xff08;或&#xff09;和xor&#xff08;异或&#xff09;是逻辑运算符&#xff0c;用于对布尔值进行操作。它们可以在不同的逻辑表达式之间进行转换。下面是and、or和xor之间的转换规则&#xff1a; a…

答题小程序源码个人每日答题怎么做

答题小程序源码之个人每日答题怎么做 该模式以个人学习答题的方式进行答题&#xff0c;每人每天有X次答题机会&#xff0c;答对一题得X分&#xff0c;连续答对有额外奖励积分&#xff0c;每道题有倒计时X秒的思考时间。答题完成后领取本次的奖励积分。答题过程中如发现题目或答…

美图自研视觉大模型3.0发布

美图公司在举办的15周年生日会上发布了自研AI视觉大模型Miracle Vision3.0版本。面世100天后&#xff0c;美图AI视觉大模型MiracleVision3.0将全面应用于美图旗下影像与设计产品&#xff0c;并将助力电商、广告、游戏、动漫、影视五大行业。 美图公司创始人、董事长兼首席执行官…

3.后来居上的栈

概述 目标&#xff1a; 栈存储结构与特点基于数组实现栈基于单链表实现栈刷题(有效的括号) 存储结构与特点 栈(Stack)并非指某种特定的数据结构&#xff0c;它是有着相同典型特征的一数据结构的统称&#xff0c;因为栈可以用数组实现&#xff0c;也可以用链表实现&#xff…

超详细的万字Git分支教程(保姆级别)

&#x1f497;推荐阅读文章&#x1f497; &#x1f338;JavaSE系列&#x1f338;&#x1f449;1️⃣《JavaSE系列教程》&#x1f33a;MySQL系列&#x1f33a;&#x1f449;2️⃣《MySQL系列教程》&#x1f340;JavaWeb系列&#x1f340;&#x1f449;3️⃣《JavaWeb系列教程》…

stable-diffusion的模型简介和下载使用

前言 我们下载完stable-diffusion-ui后还需要下载需要的大模型&#xff0c;才能进行AI绘画的操作。秋叶的stable-diffusion-ui整合包内&#xff0c;包含了anything-v5-PrtRE.safetensors和Stable Diffusion-V1.5-final-prune_v1.0.ckpt两个模型。 anything-v5-PrtRE.safetenso…

PowerShell系列(十三):PowerShell Cmdlet高级参数介绍(三)

目录 1、WarningAction参数 2、WarningVariable 出现警告后的变量 3、Whatif 假设参数 4、Confirm参数 今天给大家讲解PowerShell Cmdlet高级参数第三部分相关的知识&#xff0c;希望对大家学习PowerShell能有所帮助&#xff01; 1、WarningAction参数 通过单词含义&…

IG-Net:一种用于地铁客流预测的交互图网络模型

文章信息 论文题目为《IG-Net: An Interaction Graph Network Model for Metro Passenger Flow Forecasting》的一篇2023年4月发表在IEEE TRANSACTIONS ON INTELLIGENT TRANSPORTATION SYSTEMS的地铁客流预测交互图网络模型。 摘要 城市轨道交通系统很大程度上满足了市民的出行…

C++标准模板(STL)- 类型支持 (复合类型类别,is_scalar,is_object)

类型特性 类型特性定义一个编译时基于模板的结构&#xff0c;以查询或修改类型的属性。 试图特化定义于 <type_traits> 头文件的模板导致未定义行为&#xff0c;除了 std::common_type 可依照其所描述特化。 定义于<type_traits>头文件的模板可以用不完整类型实例…

后门分析及示例

代码分析&#xff0c;关键字定位 传一个asp文件 输入账户错误会提示&#xff1a;非法登录&#xff1b; 逆向工程抓取这个关键字定位 查找代码里面的关键字&#xff0c;定位到关键字后把代码复制出来&#xff0c; 修改exec执行函数为msgbox消息弹出用gb2312方式保存成VBS文件.…

Leetcode刷题详解——不同路径 II

1. 题目链接&#xff1a;63. 不同路径 II 2. 题目描述&#xff1a; 一个机器人位于一个 m x n 网格的左上角 &#xff08;起始点在下图中标记为 “Start” &#xff09;。 机器人每次只能向下或者向右移动一步。机器人试图达到网格的右下角&#xff08;在下图中标记为 “Finis…

企业链表(未完成)

文章目录 1. 插入2. 代码实现 1. 插入 // 插入 void insert(LinkList* list, int pos, LinkNode* data) {if (!list || !data)return;if (pos < 0 || pos > list->size)return;LinkNode* curNode &(list->head);for (int i 0; i < pos; i) {curNode curN…

jenkins工具系列 —— 删除Jenkins JOB后清理workspace

文章目录 问题现象分析解决思路脚本实现问题现象分析 Jenkins使用过程中,占用空间最大的两个位置: 1 、workspace: 工作空间,可以随便删除,删除后再次构建时间可能会比较长,因为要重新获取一些资源。 2 、job: 存放的是项目的配置、构建结果、日志等。不建议手动删除,…

任正非说:浑水摸鱼,只有强者才能摸到鱼。

嗨&#xff0c;你好&#xff01;这是华研荟【任正非说】系列的第24篇文章&#xff0c;让我们聆听任正非先生的真知灼见&#xff0c;学习华为的管理思想和管理理念。 一、只强调精细化管理&#xff0c;公司是会萎缩的&#xff0c;精细化管理的目的&#xff0c;是为了扩张不陷入混…

最新版上门服务小程序源码 同城技师上门服务系统源码

最新版上门服务小程序源码 同城技师上门服务系统源码 需要了解的请看文末 系统介绍&#xff1a; 1、数据概况&#xff08;新增业务城市用户投票功能&#xff0c;更加直观的查看业务城市的关注度、人气和影响力,促进业务开展&#xff09; 2、数据概况 &#xff08;增加可视化…

【Linux命令】Linux常见命令介绍(最强超详细版本)

Linux常见命令 1. Linux 常用命令1.1 用户配置 2.目录及文件操作3. 文件查看及处理命令3. 其他命令 1. Linux 常用命令 1.1 用户配置 Linux 下有两种用户&#xff1a;超级用户&#xff08; root&#xff09; &#xff09; 、普通用户。 a) 超级用户&#xff1a;可以再 linux …

Linux开发者的利器:深入了解环境开发工具之yum篇

W...Y的主页 &#x1f60a; 代码仓库分享&#x1f495; &#x1f354;前言&#xff1a;在博主的博客中&#xff0c;Linux系统我们已经将关键指令、权限等等全部了解完了。接下来我们应该学习什么呢&#xff1f;当我们拿起一个手机或电脑&#xff0c;我们最先想到的就是下载QQ、…

什么是Webpack?它的主要功能是什么?

聚沙成塔每天进步一点点 ⭐ 专栏简介 前端入门之旅&#xff1a;探索Web开发的奇妙世界 欢迎来到前端入门之旅&#xff01;感兴趣的可以订阅本专栏哦&#xff01;这个专栏是为那些对Web开发感兴趣、刚刚踏入前端领域的朋友们量身打造的。无论你是完全的新手还是有一些基础的开发…

内网渗透-域信息收集

域环境 虚拟机应用&#xff1a;vmware17 域控主机&#xff1a;win2008 2r 域成员主机&#xff1a;win2008 2r win7 一.域用户和本地用户区别 使用本地用户安装程序时&#xff0c;可以直接安装 使用域用户安装程序时&#xff0c;需要输入域控管理员的账号密码才能安装。总结…

【Proteus仿真】【STM32单片机】便携式恒温箱设计

文章目录 一、功能简介二、软件设计三、实验现象联系作者 一、功能简介 本项目使用Proteus8仿真STM32单片机控制器&#xff0c;使用报警模块、LCD1602显示模块、DS18B20温度模块、加热制冷模块、按键模块、HC05蓝牙模块等。 主要功能&#xff1a; 系统运行后&#xff0c;LCD1…