C#中Dictionary类使用实例

下面是“C#中Dictionary类使用实例”的完整攻略,包含以下几个方面的内容:

  1. 什么是Dictionary类
  2. 如何创建一个Dictionary对象
  3. 如何添加和访问字典中的元素
  4. 如何遍历字典
  5. 示例说明

1. 什么是Dictionary类

Dictionary类是C#中用于表示键值对的泛型集合类。每个键都与一个值相关联,因此可以通过键访问值。

2. 如何创建一个Dictionary对象

可以通过以下语法创建一个Dictionary对象:

Dictionary<TKey, TValue> dictionary = new Dictionary<TKey, TValue>();

其中,TKey表示键的类型,TValue表示值的类型。

例如,创建一个存储字符串类型键和整数类型值的Dictionary对象可以这样写:

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

3. 如何添加和访问字典中的元素

使用Add方法向字典中添加元素:

dict.Add("apple", 10);

也可以使用索引器添加或访问元素:

dict["orange"] = 20;
int value = dict["apple"];

注意:通过索引器访问一个不存在的键会抛出异常。

如果不确定字典中是否包含一个键,可以使用TryGetValue方法:

int value;
if (dict.TryGetValue("banana", out value))
{
    Console.WriteLine($"The value of banana is {value}");
}
else
{
    Console.WriteLine("banana is not in the dictionary.");
}

4. 如何遍历字典

有以下三种方法可以遍历一个Dictionary对象:

4.1 遍历键值对

使用foreach循环遍历键值对:

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

也可以使用for循环根据键访问值:

foreach (string key in dict.Keys)
{
    Console.WriteLine($"Key = {key}, Value = {dict[key]}");
}

4.2 遍历键

使用foreach循环遍历键:

foreach (string key in dict.Keys)
{
    Console.WriteLine($"Key = {key}");
}

4.3 遍历值

使用foreach循环遍历值:

foreach (int value in dict.Values)
{
    Console.WriteLine($"Value = {value}");
}

5. 示例说明

下面是使用Dictionary类的两个示例:

5.1 统计字符串中每个字符出现的次数

string str = "hello world";
Dictionary<char, int> dict = new Dictionary<char, int>();
foreach (char c in str)
{
    if (dict.ContainsKey(c))
    {
        dict[c]++;
    }
    else
    {
        dict.Add(c, 1);
    }
}

foreach (KeyValuePair<char, int> kvp in dict)
{
    Console.WriteLine($"{kvp.Key}: {kvp.Value}");
}

输出:

h: 1
e: 1
l: 3
o: 2
 : 1
w: 1
r: 1
d: 1

5.2 计算一个整数数组中出现次数最多的元素

int[] array = { 1, 2, 3, 4, 5, 2, 2, 3, 3, 3 };
Dictionary<int, int> dict = new Dictionary<int, int>();
foreach (int i in array)
{
    if (dict.ContainsKey(i))
    {
        dict[i]++;
    }
    else
    {
        dict.Add(i, 1);
    }
}

int maxCount = 0;
int maxNum = 0;
foreach (KeyValuePair<int, int> kvp in dict)
{
    if (kvp.Value > maxCount)
    {
        maxCount = kvp.Value;
        maxNum = kvp.Key;
    }
}

Console.WriteLine($"The most frequent number is {maxNum}, which appears {maxCount} times.");

输出:

The most frequent number is 3, which appears 4 times.

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:C#中Dictionary类使用实例 - Python技术站

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

相关文章

  • 记一次 .NET某医疗器械清洗系统 卡死分析

    一:背景 1. 讲故事 前段时间协助训练营里的一位朋友分析了一个程序卡死的问题,回过头来看这个案例比较经典,这篇稍微整理一下供后来者少踩坑吧。 二:WinDbg 分析 1. 为什么会卡死 因为是窗体程序,理所当然就是看主线程此时正在做什么? 可以用 ~0s ; k 看一下便知。 0:000> k # ChildEBP RetAddr 00 00aff1…

    C# 2023年4月22日
    00
  • 使用C#实现基于TCP和UDP协议的网络通信程序的基本示例

    下面我会为您详细讲解如何使用C#实现基于TCP和UDP协议的网络通信程序的基本示例。 一、基本概念介绍 在开始编写网络应用程序之前,需要我们明确一些基本的概念。- TCP协议: 传输控制协议(Transmission Control Protocol)是一种面向连接的、可靠的、基于字节流的传输层协议,常用于HTTP/HTTPS、SMTP、POP3等应用层协议…

    C# 2023年6月7日
    00
  • asp.net中使用log4net详解

    ASP.NET中使用log4net详解 什么是log4net log4net是Apache的一个开源项目,其目的是为.NET日志输出提供一个高效、灵活且可扩展的框架。log4net提供了丰富的日志记录机制,能够强化应用程序的可维护性和稳定性,将应用程序中各种事件输出到各种目标(文件、数据库、控制台等)。 如何使用log4net 步骤一:在项目中引用log4n…

    C# 2023年5月31日
    00
  • C# 如何获取出错的错误所在行数信息 原创

    为了获取C#代码中出错的错误所在行数,可以利用 StackTrace 类。StackTrace 类提供了一个堆栈跟踪,可用于获取发生未处理异常时的调用信息。通过调用StackTrace.GetFrame 方法并指定相应的帧索引,可以获取堆栈上的指定帧中的文件名、行号、列号及代码行 下面是获取出错行号的具体步骤: 第一步:获取StackTrace对象 在出现异…

    C# 2023年5月15日
    00
  • asp.net保存远程图片的代码

    下面是ASP.NET保存远程图片的完整攻略。 1. 核心思路 ASP.NET通过HttpWebRequest对象获取远程图片的数据流,再通过FileStream对象将数据流写入本地文件中。 2. 代码实现 2.1. 方法一 using System; using System.IO; using System.Net; public static bool …

    C# 2023年5月31日
    00
  • C#中日期时间的简单操作

    C#中日期时间的简单操作 在C#中,日期时间类型是一种非常常见的数据类型。C#提供了许多方法和属性来操作和处理日期时间,使得处理日期时间变得十分方便。接下来将介绍C#中日期时间的简单操作攻略。 获取当前时间 可以使用DateTime.Now属性来获取当前的日期时间。例如: DateTime now = DateTime.Now; 获取当前时间的各个部分 可以…

    C# 2023年5月15日
    00
  • C#中Ilist与list的区别小结

    C#中IList与List的区别小结 在C#中,IList与List是两个常用的接口和类。他们有一些共性,也有一些细微的区别。 IList IList接口定义了一个表示非泛型列表的对象的协定。它派生自ICollection接口并在其基础上添加了一些访问列表中元素的方法,如索引器和插入/删除等操作。IList支持在列表中插入、删除和访问元素的方法。他的定义如下…

    C# 2023年6月7日
    00
  • C# StackExchange.Redis 用法汇总

    C# StackExchange.Redis 用法汇总 StackExchange.Redis 是 StackExchange(Stack Overflow 所属公司)开发的一款 Redis 客户端库。它是基于 .NET Standard 的,所以可以在各种平台上使用。StackExchange.Redis 有着良好的性能和低延迟,被广泛使用。本文将详细介绍…

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