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 的实际值所替换。
相关推荐
追Star仙3 分钟前
基于Qt中的QAxObject实现指定表格合并数据进行word表格的合并
开发语言·笔记·qt·word
DaphneOdera1735 分钟前
Git Bash 配置 zsh
开发语言·git·bash
Code侠客行42 分钟前
Scala语言的编程范式
开发语言·后端·golang
__water1 小时前
14_音乐播放服务_字典缓存避免重复加载
单例模式·c#·unity6000·字段缓存·audiosource
lozhyf1 小时前
Go语言-学习一
开发语言·学习·golang
dujunqiu1 小时前
bash: ./xxx: No such file or directory
开发语言·bash
爱偷懒的程序源1 小时前
解决go.mod文件中replace不生效的问题
开发语言·golang
日月星宿~1 小时前
【JVM】调优
java·开发语言·jvm
2401_843785231 小时前
C语言 指针_野指针 指针运算
c语言·开发语言
Jacob程序员2 小时前
leaflet绘制室内平面图
android·开发语言·javascript