找回密码
 立即注册
首页 业界区 安全 C#之 Dictionary 详解

C#之 Dictionary 详解

全跺俚 7 天前
基本概念

Dictionary是C#中用于存储键值对集合的泛型类,属于System.Collections.Generic命名空间。它允许使用键(Key)来访问与其关联的值(Value)。其中,TKey表示字典中键的类型,TValue表示字典中值的类型。
Dictionary的基本结构


  • 键(Key):唯一标识集合中的一个元素。键是唯一的,不能有重复。
  • 值(Value):与键相关联的数据。值可以是任意类型,并且可以有重复。
  • 键值对(KeyValuePair):键和值的组合,表示Dictionary中的一个元素。
Dictionary的主要特性


  • 快速访问:通过键可以快速检索到对应的值,平均时间复杂度接近O(1),因为Dictionary类是作为哈希表实现。
  • 唯一键(Key):每个键在Dictionary中都是唯一的,不能重复。
  • 动态大小:Dictionary的大小可以动态调整,当元素数量超过容量时,它会自动扩容。
  • 无序集合:Dictionary中的元素是无序的,不能通过索引来访问它们。
Dictionary的常用操作

以下是C#中Dictionary的常用操作完整代码,其中包括添加元素、访问元素、修改元素、删除元素、检查键或值是否存在,以及遍历元素:
  1. public static void DictionaryOperation()<br>{<br>    //创建一个Dictionary来存储学生学号ID和姓名<br>    Dictionary<int, string> studentDic = new Dictionary<int, string>();<br><br>    #region 添加元素<br><br>    // Add方法(键必须唯一)<br>    studentDic.Add(1, "大姚");<br>    studentDic.Add(2, "小袁");<br>    studentDic.Add(3, "Edwin");<br><br>    // 索引器语法(键不存在时添加,存在时更新)<br>    studentDic[4] = "Charlie";<br>    studentDic[5] = "追逐时光者";<br><br>    // 安全添加(避免异常)<br>    bool isAdded = studentDic.TryAdd(6, "小明"); // 返回 false,因键已存在<br><br>    #endregion<br><br>    #region 访问元素<br><br>    // 直接访问(键必须存在,否则会有异常)<br>    var currentUserName = studentDic[1];<br>    Console.WriteLine($"当前学生姓名: {currentUserName}");<br><br>    // 安全访问(避免异常)<br>    if (studentDic.TryGetValue(5, outvar getUserName))<br>    {<br>        Console.WriteLine($"UserName:{getUserName}");<br>    }<br>    else<br>    {<br>        Console.WriteLine("当前学生ID不存在");<br>    }<br><br>    #endregion<br><br>    #region<br><br>    // 修改元素<br>    studentDic[2] = "大西瓜";<br><br>    Console.WriteLine($"修改后的名称:{studentDic[2]}");<br><br>    #endregion<br><br>    #region 删除元素<br><br>    // 删除元素<br>    bool isRemoved = studentDic.Remove(3);<br><br>    Console.WriteLine($"删除结果:{isRemoved}");<br><br>    #endregion<br><br>    #region 检查键或值是否存在<br><br>    // 检查键是否存在<br>    if (studentDic.ContainsKey(1))<br>    {<br>        Console.WriteLine("存在");<br>    }<br>    else<br>    {<br>        Console.WriteLine("不存在");<br>    }<br><br>    bool isExistcontainsValue = studentDic.ContainsValue("追逐时光者");<br><br>    Console.WriteLine($"是否存在:{isExistcontainsValue}");<br><br><br>    #endregion<br><br>    #region 遍历元素<br><br>    // 遍历元素<br>    foreach (KeyValuePair<int, string> student in studentDic)<br>    {<br>        Console.WriteLine($"ID: {student.Key}, Name: {student.Value}");<br>    }<br><br>    // 使用键的枚举器<br>    foreach (var key in studentDic.Keys)<br>    {<br>        Console.WriteLine($"Key: {key}, Value: {studentDic[key]}");<br>    }<br><br>    // 使用值的枚举器<br>    foreach (varvaluein studentDic.Values)<br>    {<br>        // 注意:这种方式不能直接获取键,只能获取值<br>        Console.WriteLine($"Value: {value}");<br>    }<br><br>    #endregion<br>}<br><br>
复制代码
参考文章


  • https://learn.microsoft.com/zh-cn/dotnet/api/system.collections.generic.dictionary-2?view=net-9.0

来源:程序园用户自行投稿发布,如果侵权,请联系站长删除
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!
您需要登录后才可以回帖 登录 | 立即注册