当前位置: 首页 > news >正文

C# Dictionary 使用指南

C# Dictionary 使用指南

1. 简介

Dictionary<TKey, TValue> 是 C# 中一个非常常用的泛型集合类,用于存储键值对(Key-Value Pair)。它可以根据键快速查找对应的值,因此在需要快速查找和检索数据的场景下非常高效。

2. 基本概念

  • TKey:键的类型,必须是唯一的。

  • TValue:值的类型,可以是任意类型。

3. 创建字典

3.1 创建空字典

using System.Collections.Generic;

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

创建一个以字符串为键、整数为值的空字典。

3.2 初始化字典

Dictionary<int, string> fruits = new Dictionary<int, string>
{
    { 1, "Apple" },
    { 2, "Banana" },
    { 3, "Cherry" }
};

使用键值对初始化字典。

4. 添加元素

4.1 使用 Add() 方法

ageDict.Add("Alice", 25);
ageDict.Add("Bob", 30);

如果键已存在,Add() 方法会抛出异常。

4.2 使用索引符 []

ageDict["Alice"] = 26;

如果键已存在,会更新对应的值。

5. 访问元素

5.1 直接访问

string value = fruits[1];  // 返回 "Apple"

如果键不存在,会抛出异常。

5.2 使用 TryGetValue()

if (fruits.TryGetValue(2, out string value))
{
    Console.WriteLine(value);  // "Banana"
}
else
{
    Console.WriteLine("Key not found.");
}

TryGetValue() 方法可以安全地访问值,避免因键不存在而抛出异常。

6. 删除元素

ageDict.Remove("Alice");  // 删除键为 "Alice" 的键值对

使用 Remove() 方法根据键删除键值对。

7. 判断键或值是否存在

7.1 判断键是否存在

bool hasKey = ageDict.ContainsKey("Bob");  // 返回 true

使用 ContainsKey() 方法检查键是否存在。

7.2 判断值是否存在

bool hasValue = ageDict.ContainsValue(30);  // 返回 true

使用 ContainsValue() 方法检查值是否存在。

8. 遍历字典

8.1 遍历键值对

foreach (var kvp in fruits)
{
    Console.WriteLine($"Key: {kvp.Key}, Value: {kvp.Value}");
}

使用 foreach 遍历字典中的所有键值对。

8.2 分别遍历键和值

foreach (int key in fruits.Keys)
{
    Console.WriteLine($"Key: {key}");
}

foreach (string value in fruits.Values)
{
    Console.WriteLine($"Value: {value}");
}

分别遍历字典中的键和值。

9. 清空字典

fruits.Clear();  // 删除字典中的所有键值对

使用 Clear() 方法清空字典。

10. 高级用法

10.1 自定义比较器

var caseInsensitiveDict = new Dictionary<string, string>(StringComparer.OrdinalIgnoreCase);

可以指定自定义比较器,例如忽略大小写的字符串比较。

10.2 使用 LINQ 查询

var query = from kvp in fruits
            select new { kvp.Key, kvp.Value };

foreach (var item in query)
{
    Console.WriteLine($"Key: {item.Key}, Value: {item.Value}");
}

使用 LINQ 查询字典。

11. 性能优化

  • 字典针对快速查找进行了优化,但需要注意其容量和加载因子(Load Factor)。

  • 如果字典的键是自定义类型,需要重写 Equals()GetHashCode() 方法。

12. 注意事项

  • 字典的键必须是唯一的,但值可以重复。

  • 字典不保证键值对的顺序。

  • 使用 TryGetValue() 方法可以避免因键不存在而抛出异常。

相关文章:

  • 一个滑块可变色的Seekbar
  • 计算机毕业设计Python+DeepSeek-R1大模型考研院校推荐系统 考研分数线预测 考研推荐系统 考研(源码+文档+PPT+讲解)
  • LlamaFactory-webui:训练大语言模型的入门级教程
  • 11特殊函数
  • java——执行linux/cmd命令
  • SE注意力机制详解:从原理到应用,全面解析Squeeze-and-Excitation模块
  • JWT+redis实现三大令牌管理方案深度解析
  • DeepSeek 2月27日技术突破:三大核心功能解析与行业影响
  • AI问答-供应链管理:排队模型M/D/5/100/m/FCFS代表的含义是什么
  • ProfiNet转EtherCAT 网关:助力工业设备 “对话”的神奇纽带
  • 一文5分钟掌握基于JWT的模拟登录爬取实战
  • STR初识
  • IP、网关、子网掩码、DNS 之间的关系详解
  • 升级TTSDK抖音小游戏banner广告接入
  • ios swift摄像头画中画技术的探索与突破
  • Elasticsearch:使用阿里云 AI 服务进行嵌入和重新排名
  • 8.Dashboard的导入导出
  • VSCode轻松调试运行.Net 8.0 Web API项目
  • 如何使用豆包AI来快速提升编程能力?
  • 自然语言处理:稀疏向量表示
  • 体坛联播|雷霆抢七淘汰掘金,国米错失意甲登顶良机
  • 人民日报头版:紧盯“学查改”,推动作风建设走深走实
  • 上博东馆常设陈列入选全国博物馆“十大精品”
  • 国税总局上海市税务局回应刘晓庆被举报涉嫌偷漏税:正依法依规办理
  • “中国神湖”加快放大资源规模!3亿美元换海外年产380万吨钾盐项目
  • 陕西一村民被冒名贷款40余万续:名下已无贷款,将继续追责