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#学习基础概念二十五问续2

    “C#学习基础概念二十五问续2”是一篇介绍C#语言基础概念的文章,主要讲解了25个问题。以下是这篇文章的完整攻略: 1. 概述 在概述中,应该简要介绍文章的主题和内容,解释本文旨在帮助哪些读者,以及文章的阅读难度等信息。 2. C#是什么 这一节主要介绍了C#是一种什么类型的语言,它的特点和用途是什么等等。这里可以举一个示例,如以展示C#代码如何使用控制台输…

    C# 2023年6月6日
    00
  • ASP.NET中的无刷新验证码的开发(完整代码)

    下面我将详细讲解ASP.NET中的无刷新验证码的开发,包括完整代码和示例说明。 环境准备 在开始开发之前,需要准备好以下环境:- Visual Studio 2019- .NET Framework 4.6.1或以上版本- jQuery库 实现流程 本篇攻略中的无刷新验证码,是通过使用jQuery和ASP.NET的Web服务技术实现的。具体的实现流程如下: …

    C# 2023年5月31日
    00
  • 采用C#代码动态设置文件权限

    关于采用C#代码动态设置文件权限的完整攻略,我们可以分为以下几个步骤来实现: 引用命名空间我们需要引用System.Security.AccessControl和System.IO命名空间,前者是用来操作文件、文件夹的访问控制列表(ACL),后者则用来操作文件或文件夹。 设置文件夹路径或文件路径设置需要控制权限的文件夹路径或文件路径。 string path…

    C# 2023年6月1日
    00
  • C#中Convert.ToInt32()和int.Parse()的区别介绍

    下面是关于“C#中Convert.ToInt32()和int.Parse()的区别介绍”的攻略: 1. Convert.ToInt32()和int.Parse()的基本介绍 在C#中,我们可以使用Convert.ToInt32()和int.Parse()将字符串类型转换为整数类型。两者主要的区别在于它们对于非法字符串的处理方式不同。 Convert.ToIn…

    C# 2023年5月15日
    00
  • C#代码延时的几种实现

    针对C#代码延时的实现,我们可以采用以下几种方法: 1.使用Thread.Sleep方法 Thread.Sleep方法是C#中比较常用的一种延时实现方式。这个方法可以使程序“休眠”一定的时间。下面是一个示例,演示了通过Thread.Sleep方法实现延时的代码: using System; using System.Threading; class Prog…

    C# 2023年6月1日
    00
  • ASP.NET 文件断点续传实现代码

    ASP.NET 文件断点续传是一种常用的文件上传方式,可以在上传过程中支持中断后恢复上传,从而提高了文件上传的可靠性和效率。下面我将为你详细讲解ASP.NET 文件断点续传实现的代码攻略: 1. 实现思路 实现文件断点续传的方法是通过客户端和服务器端相互配合来完成。当客户端需要上传一个文件时,首先将文件根据设定的分块大小分成若干个块,然后逐一上传到服务器端,…

    C# 2023年5月31日
    00
  • 快速插入大量数据的asp.net代码(Sqlserver)

    下面是一份关于如何快速插入大量数据的asp.net代码(Sqlserver)的攻略: 1. 批量插入数据的原理 快速插入大量数据的原理是通过一次插入多行数据来减少多个单行插入的开销。具体而言,就是使用SQL Server提供的Bulk Copy功能实现批量插入数据。 2. 使用Bulk Copy实现批量插入数据 首先,我们需要先创建一个DataTable对象…

    C# 2023年5月31日
    00
  • 武装你的WEBAPI-OData与DTO

    本文属于OData系列文章 Intro 前面写了很多有关OData使用的文章,很多读者会有疑问,直接将实体对象暴露给最终用户会不会有风险?$expand在默认配置的情况下,数据会不会有泄露风险? 答案是肯定的,由于OData的特性,提供给我们便捷同时也会带来一些风险。很多地方推荐使用DTO模式来隔离实体类与最终用户使用到类的关系,从而解决以上两个问题,ODa…

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