C# Dictionary字典常用属性和方法详解

限时加码!20+主流AI编程工具免费用 购周边加赠Coding Plan Lite,Claude Code、Cursor等即刻畅享,学习进阶更高效! 阅读详情

Dictionary字典在C#中至关重要日常开发用的也很频繁,它是以键值对 key、value 的形式存值,和哈希表比较像,是一种无序的结构。我们在使用Dictionary时必须先using引用命名空间 System.Collection.Generic 后才能正常使用。
接下来我们列举一下 Dictionary 中常用的属性、方法以及特点,本文编写的例子下载地址:Tests.zip(密码:7831)

  • 字典键key必须唯一
  • 字典键和字典值可以是引用类型对象、结构体和值类型数据

常用属性

属性描述
Keys字典键集合
Values字典值集合
Count字典内元素数量

常用方法

属性描述
Add新增字典元素,当字典键存在时,抛出异常
TryAdd尝试将指定的键和值添加到字典中,字典键存在时返回false表示新增失败且不会抛出异常
Remove移除字典集合内指定键数据
Reverse将字典集合反序排序
ContainsKey搜索字典键是否存在于字典集合中,存在返回true不存在返回false
ContainsValue搜索字典值是否存在于字典集合中,存在返回true不存在返回false
First获取字典集合内第一个键、值元素;若字典集合长度为0会抛出异常Sequence contains no matching element,支持lambda表达式查询
FirstOrDefault获取字典集合内第一个键、值元素;若字典集合长度为0不抛出异常并且返回null值,支持lambda表达式查询
Where按条件搜索字典集合中符合条件的结果集,支持lambda表达式查询
ElementAt获取字典集合中指定下标键、值元素
Except与另一个同类型结构的字典结果集比较并获取两个字典结果集之间的差集
Intersect与另一个同类型结构的字典结果集比较并获取两个字典结果集之间的交集
Union与另一个同类型结构的字典结果集比较并获取两个字典结果集之间的并集

Dictionary常用的属性、方法已经列举完毕,接下来附上常用属性、方法的使用代码供大家参考。

Add&TryAdd用法

using System;
using System.Collections.Generic;
using System.Linq;

namespace Tests
{
    internal class Program
    {
        private static void Main(string[] args)
        {
            Dictionary<string, string> dict_test = new Dictionary<string, string>();
            //新增字典键、值;字典键不能重复,字典值允许重复
            dict_test.Add("1", "1");
            dict_test.Add("2", "1");
            dict_test.Add("3", "1");
            dict_test.Add("4", "1");
            dict_test.Add("5", "1");
            //尝试添加键、值
            var tflag1 = dict_test.TryAdd("1", "2");
            Console.WriteLine($"尝试添加重复键1,结果:{tflag1}");
            var tflag2 = dict_test.TryAdd("6", "1");
            Console.WriteLine($"尝试添加非重复键6,结果:{tflag2}");
            Console.ReadLine();
        }
    }
}

c#字典Add&TryAdd用法

Reverse用法

using System;
using System.Collections.Generic;
using System.Linq;

namespace Tests
{
    internal class Program
    {
        private static void Main(string[] args)
        {
            Dictionary<string, string> dict_test = new Dictionary<string, string>();
            //新增字典键、值;字典键不能重复,字典值允许重复
            dict_test.Add("1", "1");
            dict_test.Add("2", "1");
            dict_test.Add("3", "1");
            dict_test.Add("4", "1");
            dict_test.Add("5", "1");
          
            //对字典集合进行反序生成一个新的集合
            var dict_new = dict_test.Reverse();
            Console.WriteLine($"反序后的字典排序:{string.Join(',', dict_new.Select(s => s.Key))}");
            Console.ReadLine();
        }
    }
}

c#字典Reverse用法

Remove用法

using System;
using System.Collections.Generic;
using System.Linq;

namespace Tests
{
    internal class Program
    {
        private static void Main(string[] args)
        {
            Dictionary<string, string> dict_test = new Dictionary<string, string>();
            //新增字典键、值;字典键不能重复,字典值允许重复
            dict_test.Add("1", "1");
            dict_test.Add("2", "1");
            dict_test.Add("3", "1");
            dict_test.Add("4", "1");
            dict_test.Add("5", "1");
          
            //移除字典集合指定键元素
            dict_test.Remove("1");
            Console.WriteLine($"移除字典键为1的元素,移除后还剩键:{string.Join(',', dict_test.Keys)}");

            Console.ReadLine();
        }
    }
}

c#字典Remove用法

ContainsKey&ContainsValue用法

using System;
using System.Collections.Generic;
using System.Linq;

namespace Tests
{
    internal class Program
    {
        private static void Main(string[] args)
        {
            Dictionary<string, string> dict_test = new Dictionary<string, string>();
            //新增字典键、值;字典键不能重复,字典值允许重复
            dict_test.Add("1", "1");
            dict_test.Add("2", "1");
            dict_test.Add("3", "1");
            dict_test.Add("4", "1");
            dict_test.Add("5", "1");
           

            //搜索字典集合内指定键元素是否存在
            Console.WriteLine($"搜索键为2的元素,结果:{dict_test.ContainsKey("2")}");
            //搜索字典集合内指定值元素是否存在
            Console.WriteLine($"搜索值为1的元素,结果:{dict_test.ContainsValue("1")}");

            Console.ReadLine();
        }
    }
}

ContainsKey&ContainsValue用法

First&FirstOrDefault&Where用法

using System;
using System.Collections.Generic;
using System.Linq;

namespace Tests
{
    internal class Program
    {
        private static void Main(string[] args)
        {
            Dictionary<string, string> dict_test = new Dictionary<string, string>();
            //新增字典键、值;字典键不能重复,字典值允许重复
            dict_test.Add("1", "1");
            dict_test.Add("2", "1");
            dict_test.Add("3", "1");
            dict_test.Add("4", "1");
            dict_test.Add("5", "1");

            //First方法查询
            var first_vle = dict_test.First(s => s.Key == "1" && s.Value == "1");
            Console.WriteLine($"First查询结果:{first_vle}");

            //FirstOrDefault方法查询
            var def_vle = dict_test.FirstOrDefault(s => s.Key == "5" && s.Value == "1");
            Console.WriteLine($"FirstOrDefault查询结果:{def_vle}");
            
            //Where方法查询
            var whr_vle = dict_test.Where(s => s.Value == "1");
            Console.WriteLine($"Where查询结果个数:{whr_vle.Count()}");
            Console.ReadLine();
        }
    }
}

c#字典First&FirstOrDefault&Where用法

Except&Intersect&Union用法

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace Tests
{
    internal class Program
    {
        private static void Main(string[] args)
        {
            Dictionary<string, string> dict_test = new Dictionary<string, string>();
            //新增字典键、值;字典键不能重复,字典值允许重复
            dict_test.Add("1", "1");
            dict_test.Add("2", "1");
            dict_test.Add("3", "1");
            dict_test.Add("4", "1");
            dict_test.Add("5", "1");

            Dictionary<string, string> dict_sec = new Dictionary<string, string>();
            //新增字典键、值;字典键不能重复,字典值允许重复
            dict_sec.Add("1", "1");
            dict_sec.Add("2", "1");
            dict_sec.Add("7", "1");
            dict_sec.Add("8", "1");
            dict_sec.Add("9", "1");
          
            //取两个字典集合之间的差集,不分先后顺序
            var exc_list = dict_test.Except(dict_sec);
            Console.WriteLine($"差集是:{string.Join(',', exc_list.Select(s => s.Key))}");

            //取两个字典集合之间的交集,不分先后顺序
            var ins_list = dict_test.Intersect(dict_sec);
            Console.WriteLine($"交集是:{string.Join(',', ins_list.Select(s => s.Key))}");

            //取两个字典集合之间的并集,不分先后顺序
            var uin_list = dict_test.Union(dict_sec);
            Console.WriteLine($"并集是:{string.Join(',', uin_list.Select(s => s.Key))}");

            Console.ReadLine();
        }
    }
}

c#字典Except Intersect Union用法

C# 字典Dictionary)基本操作 注意:在字典中,键是唯一的,不能有重复的键;同时,字典内部通常采用哈希表实现,因此查找、添加删除操作的时间复杂度通常是O(1)。九、C# 8.0 及以上版本还引入了。 阅读详情

相关推荐

C# Dictionary使用详解

C# 中,是一个非常常用的数据结构,用于存储键值对。Dictionary类实现了接口,并且提供了许多有用的方法属性来操作键值对集合。下面是一些关于如何使用Dictionary

精通搬砖,资深技术砖家,在软件开发,人工智能,设备开发等领域都有研究。商业合作&交流学习可私信联系。 1819

C# 基础之字典——Dictionary(一)

C#基础 字典Dictionary 底层实现

qq_41044598的博客 4万+

C# Dictionary字典类介绍

简介 在C#中,Dictionary提供快速的基于键值的元素查找。当你有很多元素的时候可以使用它。它包含在System.Collections.Generic名空间中。 在使用前,你必须声明它的键类型值类型。 命名空间:System.Collections.Generic Dictionary 泛型类提供了从一组键到一组值的映射。字典中的每个添加项都由一个值及其相

当一堆用不熄灭的柴火 1万+

c# 字典Dictionary

作者:曾志伟 链接:https://zhuanlan.zhihu.com/p/96633352 来源:知乎 C# 用了两三年,然后突然有一天被问到C#Dictionary的基本实现,这让我反思到我一直处于拿来主义,能用就好,根本没有去考虑学习一些底层架构,想想令人头皮发麻。下面开始学习一些我平时用得理所当然的东西,今天先学习一下字典的源码。 一、Dictionary源码学习 Dictionary实现我们主要对照源码来解析,目前对照源码的版本是.Net Framwork 4.8。 源码地址:dicti

qq_40097668的博客 2万+

C#Dictionary(字典)的用法

C#中,Dictionary提供快速的基于兼职的元素查找。他的结构是这样的:Dictionary<[key], [value]> ,当你有很多元素的时候可以使用它。它包含在System.Collections.Generic名空间中。在使用前,你必须声明它的键类型值类型。 方法/步骤 要使用Dictionary集合,需要导入C#泛型命名空间 System...

Peter的博客 9836

c#字典类(Dictionary)介绍

关键字:Dictionary 说明: 1、必须包含命名空间System.Collection.Generic 2、Dictionary里面每一个元素都是以键值对的形式存在的 3、键必须是唯一的,而值不需要唯一的 4、键值都可以以任何数据类型存在(比如:值类型、引用类型、自定义类型等等) 5、通过一个键读取一个值得时间接近O(1) 字典的使用方法: 定义: Dictionary&lt...

weixin_43899724的博客 1万+

C#常用数据操作方法详解

在这篇文章中,我们将一探究竟,看看如何使用String类、Math类Array类的一些常用方法来简化我们的代码提高效率。在C#的储藏室里,集合操作、文件处理、网络服务访问、多线程处理等等方面都有相应的类方法,可以帮助你的代码更高效、更简洁、也更加强大。版本的不断更新迭代,微软也在不断地增加更多新颖且有帮助的工具方法来丰富我们的开发工具箱。掌握这些基本工具的同时,随时留意新的变化添加,将有助于保持你的技能前沿竞争力。方法允许我们对序列中的每个元素应用一个函数,并返回一个包含结果的新序列。

2401_82410658的博客 2924

重温 C# 字典Dictionary

C# 中使用字典Dictionary来存储键值对的数据。创建字典时需要定义键值对的类型,再添加字典元素时需要符合定义的键值对类型。要使用Dictionary集合,需要导入C#泛型命名空间System.Collections.Generic(程序集:mscorlib)Dictionary的特性:1、从一组键(Key)到一组值(Value)的映射,每一个添加项都是由一个值及其相关连的键组成2、任何键都必须是唯一的3、键不能为空引用null(VB中的Nothing),若值为引用类型,则可以为空值4、KeyVal

flysh05的专栏 6355

Dictionary详解C#

Dictionary定义 在C#中,Dictionary能提供快速的基于键值的元素查找。我们先来看一下源代码: public class Dictionary<TKey, TValue> : IDictionary<TKey, TValue>, ICollection<KeyValuePair<TKey, TValue>>, IEnumerable<KeyValuePair<TKey, TValue>>, IEnumerable, ID

weixin_46433786的博客 6844

C# Dictionary字典)的用法

是一个强大且灵活的集合类型,它允许你使用键来存储检索值。然而,在多线程环境中使用时需要特别小心,以确保线程安全性。通过使用锁、或其他同步机制,你可以安全地在多个线程之间共享修改Dictionary。👨‍💻博主Python老吕评论,您的举手之劳将对我提供了无限的写作动力!🤞') # 每日一码,用Python跟大家问好!🔥《跟老吕学Python》🌞《Python全栈工程师·附录资料》《Pillow库·附录资料》《Pygame·附录资料》《Tkinter·附录资料》《Django·附录资料》

Python老吕的博客 7195

Unity的C#编程教程_59_字典 Dictionary 详解及应用练习

文章目录C# Dictionary: IntroductionC# Dictionary: Looping through DictionaryC# Dictionary: When to UseC# Dictionary: Using Dictionary for Player ConnectionsC# Dictionary: Using Dictionary with Primitive Types C# Dictionary: Introduction 字典 key value 的配对

AItrust的博客 6787

C#字典Dictionary 的添加,遍历

C#字典Dictionary 的添加,遍历,移除系列操作: //一、创建泛型哈希表,然后加入元素 Dictionary<string, string> oscar = new Dictionary<string, string>(); oscar.Add("哈莉?贝瑞", "《死囚之舞》"); oscar.Add("朱迪?丹奇", "《携手人生》"); oscar.Add("尼科尔?基德曼", "《红磨坊》"); oscar.Add("詹妮弗?康纳利", "《美丽心灵》")

水上漂的专栏 3479

C#Dictionary字典类介绍

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

俺要回家的博客 8821

C# 技术使用笔记:C#字典Dictionary)的使用

字典Dictionary)是C#中一种非常重要的集合类型,它存储键值对(Key-Value Pair),键(Key)是唯一的,而值(Value)可以重复。字典的主要作用是通过键快速检索对应的值,这种键值映射的方式使得数据的查找管理更加高效。高效查找:字典的查找速度非常快,其时间复杂度接近O(1),这使得它在处理大量数据时具有显著的优势。例如,在一个包含100万条数据的字典中,查找一个特定键的值几乎可以在瞬间完成,而如果使用列表(List)进行查找,可能需要遍历整个列表,时间复杂度为O(n)。数据组织。

caifox的博客 6538

C#Dictionary的用法

C#中,Dictionary提供快速的基于兼职的元素查找。他的结构是这样的:Dictionary ,当你有很多元素的时候可以使用它。它包含在System.Collections.Generic名空间中。在使用前,你必须声明它的键类型值类型。要使用Dictionary集合,需要导入C#泛型命名空间System.Collections.Generic(程序集:mscorlib)Dictionary的描述1、从一组键(Key)到一组值(Value)的映射,每一个添加项都是由一个......

zhanchulan的博客 1万+

C#字典Dictionary的用法详解

有时候会用到Dictionary字典,所以记录一下字典的使用方法,方便以后使用,简单记录一下,不喜勿喷哦,大家好,我是心疼你的一切,不定时更新Unity开发技巧,觉得有用记得一键三连哦。下面就让我们进入正文吧!本次总结的就是字典的使用方法,既有取字典的键,也有取字典的值,有需要会继续添加新的不定时更新Unity开发技巧,觉得有用记得一键三连哦。么么哒。

心疼你的一切博客 1万+

C#Dictionary字典的赋值

C#Dictionary字典的赋值, C# 引用类型赋值简述

陈言必行 -- Unity游戏开发领域优质博主 1万+

C# Dictionary常用属性方法

常用属性 名称 说明 Comparer 获取用于确定字典中的键是否相等的 IEqualityComparer<T>。 Count 获取包含在 Dictionary<TKey, TValue> 中的键/值对的数目。 Item 获取或设置与指定的键相关联的值。 Keys 获取包含 Dictionary&...

大正的博客 1705

C# 基础 Dictionary(字典)ConcurrentDictionary(线程安全的字典)

一、Dictionary Dictionary<TKey, TValue> 泛型类提供了键值对的映射。通过键来检索值的速度是非常快的,接近于 O(1),这是因为 Dictionary<TKey, TValue> 类是作为一个哈希表来实现的。检索速度取决于为 TKey 指定的类型的哈希算法的质量。TValue可以是值类型,数组,类或其他。 Dictionary是一种变种的HashTable,它采用一种分离链接散列表的数据结构来解决哈希冲突的问题。命名空间System.Collectio

weixin_41561640的博客 2万+
上一篇: 如何添加图片水印
下一篇: C#中使用Invoke和BeginInvoke跨线程更新UI控件示例代码
黑色寂静夜晚
博客等级 码龄13年 9粉丝 0原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值