字典是 C# 中使用最广泛的数据结构之一,提供快速查找、键值对存储等。本指南探讨了该类,解释了从基本用法到高级方案的复杂性。Dictionary<TKey, TValue>
字典是键值对的集合,其中每个键必须是唯一的。当您需要通过唯一键查找值时,通常使用它。
// Empty dictionary
var capitals = new Dictionary<string, string>();
// Initialized dictionary
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"]; // Returns "London"
bool hasUK = capitals.ContainsKey("UK"); // Returns 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
if (capitals.TryGetValue("UK", out string capital))
Console.WriteLine(capital);
else
Console.WriteLine("Key not found.");
该类针对快速查找进行了优化。但是,了解其容量和有助于优化性能,尤其是在处理大型词典时。DictionaryLoad Factor
默认情况下,字典使用键的默认比较器。但是,您可以指定自定义比较器:
var caseInsensitiveDict = new Dictionary<string, string>(StringComparer.OrdinalIgnoreCase);
在多线程方案中,可能需要线程安全操作。从命名空间使用。ConcurrentDictionarySystem.Collections.Concurrent
字典与 LINQ 无缝协作,允许强大的查询:
var filtered = capitals.Where(kvp => kvp.Value.StartsWith("W"))
.ToDictionary(kvp => kvp.Key, kvp => kvp.Value);
按键的升序存储键值对。当您需要特定顺序的数据时很有用。
提供字典的只读视图。保护基础词典不被修改。
C# 中的字典是一种多功能且功能强大的工具,非常适合需要按键快速查找的方案。从添加和检索项的基础知识到线程安全操作和 LINQ 集成的复杂性,掌握字典可以显著增强 C# 中的数据处理能力。掌握了这些知识,您就可以充分准备充分利用这种基本数据结构。