C#集合之字典的用法

C#是一门强类型语言,拥有许多集合类型,字典(Dictionary)是其中最常用的之一。字典是一种键值对(Key-Value)的集合类型,可以通过键(key)快速地查找对应的值(value),同时也支持添加、删除、修改键值对等操作。

创建字典

在C#中创建字典可以使用Dictionary<TKey, TValue>类。TKey代表键的类型,TValue代表值的类型。下面是一个创建string类型键和int类型值的字典的示例代码:

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

添加键值对

可以使用Add()方法向字典中添加键值对:

dict.Add("apple", 1);

还可以使用索引器的方式添加键值对:

dict["banana"] = 2;

如果添加时出现键重复的情况,会抛出ArgumentException异常,可以使用ContainsKey()方法判断键是否已经存在于字典中。

删除键值对

可以使用Remove()方法删除键值对:

dict.Remove("apple");

还可以使用Clear()方法清空字典中所有的键值对。

获取键值对

可以通过键来获取对应的值,如果键不存在于字典中,会抛出KeyNotFoundException异常。可以使用TryGetValue()方法判断键是否存在:

bool contains = dict.TryGetValue("banana", out int value);

如果键存在于字典中,方法会将对应的值赋值给value变量并返回true,否则返回false

还可以使用foreach循环遍历字典中的键值对:

foreach(var kv in dict)
{
    Console.WriteLine("Key: {0}, Value: {1}", kv.Key, kv.Value);
}

示例1:使用字典统计单词出现次数

string str = "hello world, hello csharp";
string[] words = str.Split(' ');
Dictionary<string, int> dict = new Dictionary<string, int>();
foreach (string word in words)
{
    if (dict.ContainsKey(word))
    {
        dict[word]++;
    }
    else
    {
        dict.Add(word, 1);
    }
}
foreach (var kv in dict)
{
    Console.WriteLine("Word: {0}, Count: {1}", kv.Key, kv.Value);
}

输出结果:

Word: hello, Count: 2
Word: world,, Count: 1
Word: csharp, Count: 1

示例2:使用字典实现缓存

Dictionary<string, string> cache = new Dictionary<string, string>();
string GetResultFromDB(string key)
{
    // 从数据库获取结果
    return "";
}
string GetData(string key)
{
    if (cache.ContainsKey(key))
    {
        return cache[key];
    }
    else
    {
        string result = GetResultFromDB(key);
        cache.Add(key, result);
        return result;
    }
}

这个示例演示了如何使用字典实现一个简单的缓存功能,避免频繁访问数据库。在调用GetData()方法时,先检查缓存中是否存在对应的值,如果存在直接返回;否则从数据库中获取结果,并将结果添加到缓存中。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:C#集合之字典的用法 - Python技术站

(0)
上一篇 2023年5月31日
下一篇 2023年5月31日

相关文章

  • C#调用C类型dll入参为struct的问题详解

    下面是“C#调用C类型dll入参为struct的问题详解”的完整攻略: 1. 为什么C#调用C类型dll入参为struct会有问题? 在C中,结构体的内存布局与内存对齐非常重要,C编译器默认会对结构体进行内存对齐操作,而C#的结构体内存布局与C的不同,所以我们在C#代码中调用C类型dll时,需要手动将C#结构体转换为C中内存对齐后的结构体,确保与C的结构体一…

    C# 2023年5月31日
    00
  • C#实现将浮点数表示的货币数量以汉字大写形式输出的方法

    实现将浮点数表示的货币数量以汉字大写形式输出,需要以下步骤: 步骤一:将浮点数转为字符串并分离整数部分和小数部分 我们可以使用C#的ToString方法将对应的浮点数转为字符串,并且使用Split方法将整数部分和小数部分分离开。 double money = 123456.78; string moneyStr = money.ToString("…

    C# 2023年6月7日
    00
  • C#如何利用结构体对固定格式数据进行解析

    下面是关于C#如何利用结构体对固定格式数据进行解析的完整攻略: 什么是结构体? 结构体是一种用户自定义的数据类型,它允许将不同类型的数据组合在一起。结构体的格式定义为: struct 结构体名称 { 变量1类型 变量1名称; 变量2类型 变量2名称; //… } 利用结构体解析固定格式数据 当我们接收到固定格式的数据流时,通常需要将其解析为具体的数据类型…

    C# 2023年5月15日
    00
  • C#中POST接口formdata传参模板的记录

    关于“C#中POST接口formdata传参模板的记录”的完整攻略,我将从以下几个方面进行介绍和说明: formdata是什么 POST请求中formdata的传参方式 C#中如何使用POST请求发送formdata数据 1. formdata是什么 formdata是一种HTTP请求中的数据传输方式。在Web开发中,常用的HTTP请求方式有GET和POST…

    C# 2023年5月31日
    00
  • asp.net core webapi 服务端配置跨域的实例

    在ASP.NET Core WebAPI中配置跨域的实例如下: 在Startup.cs文件中添加跨域服务 在ConfigureServices方法中添加跨域服务。例如,以下代码添加了一个名为“AllowAll”的跨域服务: public void ConfigureServices(IServiceCollection services) { service…

    C# 2023年5月16日
    00
  • 详细介绍C# 泛型

    详细介绍C#泛型 什么是泛型? 泛型是C#语言中的一种数据类型,它允许我们写出能够适用于多种数据类型的代码。泛型作用于类、接口、方法等,可以大大提高代码的复用性和可读性。 泛型的语法与用法 泛型类 泛型类可以适用于多种数据类型,我们可以通过类名后加尖括号传入数据类型,例如: public class MyList<T> { private T[]…

    C# 2023年5月15日
    00
  • C#6.0新语法示例详解

    C#6.0新语法示例详解攻略 简介 C#6.0是微软为.NET开发者带来的一个重要的版本,其中包含了很多新的语法特性,这些新特性可以让开发者更加方便地书写代码,提高代码的可读性和可维护性。 本篇攻略将会对C#6.0中的一些新语法特性进行详细讲解,包括:Null-conditional运算符、string的插值、nameof表达式、Auto-property初…

    C# 2023年5月15日
    00
  • C#中的串口通信SerialPort详解

    C#中的串口通信SerialPort详解 什么是串口通信 串口通信是指通过电脑的串口与外设进行交互的一种通信方式。串口通信包含了一组信号线,用于在两个设备之间传输数据。串口通信包含了最基本的数据传输方式,也是最常用的通讯方式之一。 SerialPort类 在C#中,串口通信主要是使用SerialPort类来实现的。SerialPort类提供了串口通信中所有必…

    C# 2023年5月15日
    00
合作推广
合作推广
分享本页
返回顶部