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#实现接口base调用示例详解

    当我们在C#中定义一个接口时,可以通过实现该接口来实现某些功能。但有时候我们需要在接口的实现中调用接口自身的方法,这时可以使用“Base”关键字。以下是如何在C#中使用“Base”关键字实现接口之间的方法调用的攻略。 1. 接口中使用Base关键字 在接口中,我们可以使用“Base”关键字来调用当前接口继承的基接口中定义的方法。下面是一个示例: interf…

    C# 2023年6月6日
    00
  • 在web.config和app.config文件中增加自定义配置节点的方法

    在Web.config和App.config文件中添加自定义的配置节点可以方便的在应用程序中进行配置参数的管理,下面是完整的攻略。 在Web.config中增加自定义配置节点 首先打开Web.config文件,需要在<configuration>标签下增加自定义的配置节点,可以按照以下步骤进行: 在<configuration>标签下…

    C# 2023年5月15日
    00
  • C#备忘录模式(Memento Pattern)实例教程

    C#备忘录模式(Memento Pattern)实例教程 备忘录模式(Memento Pattern)是一种行为型设计模式,它允许将一个对象的内部状态保存到一个外部的备忘录对象中,从而可以在需要时将对象恢复到先前的状态。在本篇教程中,我们将介绍C#中备忘录模式的使用方法和实现步骤,并提供两个示例说明。 示例一:备忘录模式的基本使用 步骤一:创建备忘录类 首先…

    C# 2023年6月8日
    00
  • C#前端验证和后台验证代码实例

    下面是关于”C#前端验证和后台验证代码实例”的完整攻略: 前言 在开发Web应用程序时,数据的正确性对整个应用程序的安全具有重要意义。为了提高Web应用程序的健壮性,我们需要在前端和后台分别对用户输入的数据进行验证。本文将演示C#如何通过前端验证和后台验证确保用户输入的数据的准确性。 前端验证 在前端验证中,我们使用JavaScript代码来检查用户输入的数…

    C# 2023年5月31日
    00
  • C#生成不重复随机字符串类

    C#生成不重复随机字符串类可以通过以下几个步骤来实现: 导入命名空间:System.Security.Cryptography和System.Text。 C# using System.Security.Cryptography; using System.Text; 定义一个生成随机字符串的函数,函数可以包括一个参数,指定生成的字符串的长度。函数内部要创建…

    C# 2023年6月1日
    00
  • C#七大经典排序算法系列(上)

    当我们需要对数据进行排序时,排序算法就显得非常重要。C#语言中提供了多种排序算法,我们可以根据具体场景选择不同的排序算法。本文中,我将详细介绍C#七大经典排序算法系列(上)。 七大经典排序算法 C#提供的七种经典排序算法包括: 冒泡排序(Bubble Sort) 选择排序(Selection Sort) 插入排序(Insertion Sort) 快速排序(Q…

    C# 2023年6月1日
    00
  • 电脑英文缩写大全

    为了让大家更好地了解“电脑英文缩写大全”的完整攻略,我将分为以下几个部分进行讲解: 1. 收集电脑英文缩写 首先,我们需要收集电脑英文缩写。可以从各种渠道去收集,比如: 在网上搜索相关的英文缩写资料; 浏览电脑文章、手册、技术文档等,注意其中使用的缩写; 参考行业内广泛流传的缩写资料,如IEEE 802.11、ISO 9660等。 收集到英文缩写之后,需要对…

    C# 2023年6月8日
    00
  • c# Base64编码和图片的互相转换代码

    下面是关于“c# Base64编码和图片的互相转换代码”的完整攻略: Base64编码 Base64编码是将二进制数据通过64个可打印字符来表示的一种编码方式。在C#中,我们可以使用Convert.ToBase64String()方法将一个byte数组进行Base64编码,方法原型如下: public static string ToBase64String…

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