问小白 wenxiaobai
资讯
历史
科技
环境与自然
成长
游戏
财经
文学与艺术
美食
健康
家居
文化
情感
汽车
三农
军事
旅行
运动
教育
生活
星座命理

C# Dictionary:从基础到高级的全面探索

创作时间:
作者:
@小白创作中心

C# Dictionary:从基础到高级的全面探索

引用
CSDN
1.
https://blog.csdn.net/sD7O95O/article/details/136796284

概述

字典是C#中使用最广泛的数据结构之一,提供快速查找、键值对存储等。本指南探讨了该类,解释了从基本用法到高级方案的复杂性。

词典基础

什么是字典?

字典是键值对的集合,其中每个键必须是唯一的。当您需要通过唯一键查找值时,通常使用它。

创建和初始化:

// 空字典
var capitals = new Dictionary<string, string>();

// 初始化字典
var fruits = new Dictionary<int, string>
{
    { 1, "Apple" },
    { 2, "Banana" },
    { 3, "Cherry" }
};

基本操作

添加条目:

capitals.Add("USA", "Washington, D.C.");
capitals.Add("UK", "London");

检索值:

string ukCapital = capitals["UK"];  // 返回 "London"

检查密钥:

bool hasUK = capitals.ContainsKey("UK");  // 返回 true

删除条目:

capitals.Remove("UK");

高级概念

遍历字典:

您可以循环访问键和/或值(键值对):

foreach (var key in capitals.Keys)
    Console.WriteLine(key);

foreach (var value in capitals.Values)
    Console.WriteLine(value);

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

使用以下方法进行值查找:TryGetValue

当键不存在时,不要捕获异常,而是使用:TryGetValue

if (capitals.TryGetValue("UK", out string capital))
    Console.WriteLine(capital);
else
    Console.WriteLine("Key not found.");

字典容量和性能:

该类针对快速查找进行了优化。但是,了解其容量和有助于优化性能,尤其是在处理大型词典时。

  • 容量:字典在不调整大意的情况下可以容纳的条目总数。
  • 计数:字典中的当前条目数。
  • 荷载系数:与 .CountCapacity

比较器:

默认情况下,字典使用键的默认比较器。但是,您可以指定自定义比较器:

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

并发词典:

在多线程方案中,可能需要线程安全操作。从命名空间使用:ConcurrentDictionarySystem.Collections.Concurrent

与 LINQ 一起使用:

字典与 LINQ 无缝协作,允许强大的查询:

var filtered = capitals.Where(kvp => kvp.Value.StartsWith("W"))
                       .ToDictionary(kvp => kvp.Key, kvp => kvp.Value);

高级词典类型

SortedDictionary<TKey, TValue>:

按键的升序存储键值对。当您需要特定顺序的数据时很有用。

ReadOnlyDictionary<TKey, TValue>:

提供字典的只读视图。保护基础词典不被修改。

最佳实践:

  1. 使用正确类型的键:键在字典中的生存期内应该是不可变的。
  2. 注意:字典不允许使用键,但允许使用值。nullnullnull
  3. 针对查找性能进行优化:如果您知道数据的大致大小,请使用该容量初始化字典。
  4. 避免频繁调整大小:不断添加超出容量的元素会导致字典调整大小,从而影响性能。

结论

C#中的字典是一种多功能且功能强大的工具,非常适合需要按键快速查找的方案。从添加和检索项的基础知识到线程安全操作和LINQ集成的复杂性,掌握字典可以显著增强C#中的数据处理能力。掌握了这些知识,您就可以充分准备充分利用这种基本数据结构。

© 2023 北京元石科技有限公司 ◎ 京公网安备 11010802042949号