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

本文详细介绍了C#中Dictionary的使用,包括其作为键值对存储的特性、常用的属性如Keys、Values和Count,以及方法如Add、TryAdd、Remove、Reverse等。通过示例代码展示了如何进行添加、删除、查找和操作字典元素,并探讨了字典的集合操作如Except、Intersect和Union。这些内容对于理解和高效利用Dictionary在C#开发中至关重要。
摘要由CSDN通过智能技术生成

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用法

  • 0
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值