c# 关于 Dictionary 知识点基础讲解

在C#中,Dictionary 是一种集合类型,用于存储键值对(key-value pairs)。它属于 System.Collections.Generic 命名空间,并提供了一种快速查找数据的方法。Dictionary 类似于哈希表或映射,允许你通过键(key)快速访问值(value)。

主要概念和特性

  1. 键值对Dictionary 中的每个元素都是一个键值对,键是唯一的,而值可以是任何类型。
  2. 泛型Dictionary<TKey, TValue> 是泛型集合,允许你指定键和值的类型。
  3. 快速查找Dictionary 使用哈希表实现,因此在大多数情况下,查找、插入和删除操作的时间复杂度接近 O(1)。
  4. 无序Dictionary 中的元素是无序的,如果你需要保持元素的顺序,可以考虑使用其他数据结构,如 ListSortedDictionary

声明和初始化

你可以通过以下几种方式声明和初始化一个 Dictionary

cs 复制代码
using System;  
using System.Collections.Generic;  
  
class Program  
{  
    static void Main()  
    {  
        // 创建一个字典,键为整数,值为字符串  
        Dictionary<int, string> dictionary = new Dictionary<int, string>();  
        dictionary.Add(1, "One");  
        dictionary.Add(2, "Two");  
        dictionary.Add(3, "Three");  
  
        // 使用 foreach 循环遍历字典  
        foreach (KeyValuePair<int, string> kvp in dictionary)  
        {  
            // kvp.Key 获取键,kvp.Value 获取值  
            Console.WriteLine("Key = {0}, Value = {1}", kvp.Key, kvp.Value);  
        }  
    }  
}

常用操作

  1. 添加元素

|---|-------------------------------|
| | dictionary1.Add(4, "Four"); |

  1. 访问元素

|---|--------------------------------------------|
| | string value = dictionary1[2]; // 通过键访问值 |

  1. 检查键是否存在

|---|--------------------------------------------------|
| | bool containsKey = dictionary1.ContainsKey(1); |

  1. 检查值是否存在

|---|----------------------------------------------------------|
| | bool containsValue = dictionary1.ContainsValue("Two"); |

  1. 移除元素

|---|-----------------------------------|
| | dictionary1.Remove(3); // 通过键移除 |

  1. 遍历元素

|---|----------------------------------------------------------------|
| | foreach (KeyValuePair<int, string> kvp in dictionary1) |
| | { |
| | Console.WriteLine($"Key = {kvp.Key}, Value = {kvp.Value}"); |
| | } |

示例代码

以下是一个完整的示例,展示了 Dictionary 的基本用法:

cs 复制代码
using System;  
using System.Collections.Generic;  
  
class Program  
{  
    static void Main()  
    {  
        // 初始化一个 Dictionary  
        Dictionary<int, string> dictionary = new Dictionary<int, string>  
        {  
            { 1, "One" },  
            { 2, "Two" },  
            { 3, "Three" }  
        };  
  
        // 添加新的键值对  
        dictionary.Add(4, "Four");  
  
        // 访问并打印元素  
        foreach (KeyValuePair<int, string> kvp in dictionary)  
        {  
            Console.WriteLine($"Key = {kvp.Key}, Value = {kvp.Value}");  
        }  
  
        // 检查键是否存在  
        if (dictionary.ContainsKey(2))  
        {  
            Console.WriteLine("Dictionary contains key 2.");  
        }  
  
        // 移除元素  
        dictionary.Remove(3);  
  
        // 打印移除后的元素  
        Console.WriteLine("After removal:");  
        foreach (KeyValuePair<int, string> kvp in dictionary)  
        {  
            Console.WriteLine($"Key = {kvp.Key}, Value = {kvp.Value}");  
        }  
    }  
}

KeyValuePair 是一种在 .NET 框架中定义的结构,用于表示一个键值对(Key-Value Pair)。它主要用于集合中,比如字典(Dictionary<TKey, TValue>),以便能够同时访问键(Key)和值(Value)。KeyValuePair 是一种泛型结构,定义在 System.Collections.Generic 命名空间中。

在C#中,$符号用于字符串插值(String Interpolation),它允许你在字符串中嵌入变量或表达式,并且这些变量或表达式会在运行时被其值所替换。这种方式使得字符串的格式化变得更加简洁和直观。

  • $ 符号告诉编译器,这是一个插值字符串。
  • {kvp.Key}{kvp.Value} 是插值表达式,它们会在运行时被 kvp.Keykvp.Value 的实际值所替换。
相关推荐
bzmK1DTbd1 天前
Git版本控制:Java项目中的分支管理与合并策略
java·开发语言·git
Rust研习社1 天前
为什么 Rust 没有空指针?
开发语言·后端·rust
kyriewen111 天前
WebAssembly:前端界的“外挂”,让C++代码在浏览器里跑起来
开发语言·前端·javascript·c++·单元测试·ecmascript
其实防守也摸鱼1 天前
CTF密码学综合教学指南--第九章
开发语言·网络·python·安全·网络安全·密码学·ctf
砚底藏山河1 天前
Python量化开发:2026最佳实时股票数据API接口推荐与对比
开发语言·windows·python
AlunYegeer1 天前
JAVA,以后端的视角理解前端。在全栈的路上迈出第一步。
java·开发语言·前端
浅念-1 天前
刷穿LeetCode:BFS 解决 Flood Fill 算法
数据结构·c++·算法·leetcode·职场和发展·bfs·宽度优先
hixiong1231 天前
C# OpenvinoSharp使用DINOv2模型进行图像相似度计算
开发语言·c#
DFT计算杂谈1 天前
自动化脚本一键绘制三元化合物相图
java·运维·服务器·开发语言·前端·python·自动化
EW Frontier1 天前
6G ISAC新范式:基于智能漏波天线的Wi‑Fi通感一体化系统设计与实测【附MATLAB+python代码】
开发语言·python·matlab·music·isac·doa·wi‑fi