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

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字典常用属性和方法详解

posted @   零壹贰叁肆  阅读(2374)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 【自荐】一款简洁、开源的在线白板工具 Drawnix
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
· Docker 太简单,K8s 太复杂?w7panel 让容器管理更轻松!
点击右上角即可分享
微信分享提示