C#中Dictionary泛型集合7种常见的用法

下面是"C#中Dictionary泛型集合7种常见的用法"的完整攻略:

1. 创建Dictionary对象

使用Dictionary之前,首先需要创建Dictionary对象。可以通过以下代码创建:

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

其中,TKey是键的类型,TValue是值的类型。

2. 添加键值对

向Dictionary中添加键值对可以使用Add方法:

dict.Add(key, value);

也可以使用索引器:

dict[key] = value;

3. 访问值

通过Dictionary中的键可以访问到相应的值:

TValue value = dict[key];

需要注意的是,如果键不存在,访问将会抛出异常。此时可以使用TryGetValue方法:

bool success = dict.TryGetValue(key, out TValue value);

4. 遍历Dictionary

可以通过foreach循环遍历Dictionary中的所有键值对,如下所示:

foreach (KeyValuePair<TKey, TValue> kvp in dict)
{
    TKey key = kvp.Key;
    TValue value = kvp.Value;
}

也可以遍历所有的键或值:

foreach (TKey key in dict.Keys)
{
    // do something with key
}

foreach (TValue value in dict.Values)
{
    // do something with value
}

5. 字典初始化器

可以使用C# 6.0中的字典初始化器简化添加操作:

Dictionary<string, int> dict = new Dictionary<string, int>()
{
    ["one"] = 1,
    ["two"] = 2,
    ["three"] = 3
};

6. LINQ查询

可以使用LINQ查询想要的键值对或者对键值对的值进行过滤、排序等操作,如下所示:

var query = from kvp in dict
            where kvp.Value > 10
            orderby kvp.Key
            select kvp;

foreach (KeyValuePair<TKey, TValue> kvp in query)
{
    TKey key = kvp.Key;
    TValue value = kvp.Value;
}

7. 转换为List

最后,可以将Dictionary转换为List进行多种操作:

List<KeyValuePair<TKey, TValue>> list = dict.ToList();

以上就是“C#中Dictionary泛型集合7种常见的用法”的完整攻略了。

下面给出两条示例说明:

示例1 前30个斐波那契数列

Dictionary <int,int> dict = new Dictionary<int,int>()
{
    [0] = 0,
    [1] = 1
};

for (int i = 2; i < 30; i++)
{
    int value = dict[i - 1] + dict[i - 2];
    dict[i] = value;
}

foreach (KeyValuePair<int, int> kvp in dict)
{
    Console.WriteLine("key:{0}, value:{1}", kvp.Key, kvp.Value);
}

输出结果:

key:0, value:0
key:1, value:1
key:2, value:1
key:3, value:2
key:4, value:3
key:5, value:5
key:6, value:8
key:7, value:13
key:8, value:21
key:9, value:34
key:10, value:55
key:11, value:89
key:12, value:144
key:13, value:233
key:14, value:377
key:15, value:610
key:16, value:987
key:17, value:1597
key:18, value:2584
key:19, value:4181
key:20, value:6765
key:21, value:10946
key:22, value:17711
key:23, value:28657
key:24, value:46368
key:25, value:75025
key:26, value:121393
key:27, value:196418
key:28, value:317811
key:29, value:514229

示例2 统计数组中每个元素的数量

int[] arr = { 1, 2, 3, 3, 4, 4, 4, 5 };
Dictionary<int, int> dict = new Dictionary<int, int>();

foreach (int i in arr)
{
    if (!dict.ContainsKey(i))
    {
        dict.Add(i, 1);
    }
    else
    {
        dict[i]++;
    }
}

foreach (KeyValuePair<int, int> kvp in dict)
{
    Console.WriteLine("key:{0}, count:{1}", kvp.Key, kvp.Value);
}

输出结果:

key:1, count:1
key:2, count:1
key:3, count:2
key:4, count:3
key:5, count:1

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:C#中Dictionary泛型集合7种常见的用法 - Python技术站

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

相关文章

  • uniapp+.net core实现微信小程序获取手机号功能

    uniapp+.netcore实现微信小程序获取手机号功能的完整攻略 简介 本攻略将介绍如何使用 uniapp 和 .NET Core 实现微信小程序获取手机号的功能。我们将使用微信提供的 API 来获取用户的手机号,并将其发送到 .NET Core 后端进行处理。 步骤1:创建 uniapp 项目 在 HBuilderX 中创建一个名为“wx-phone-…

    C# 2023年5月12日
    00
  • C#请求http向网页发送接收数据的方法

    下面是“C#请求http向网页发送接收数据的方法”的完整攻略。 使用HttpClient发送HTTP请求 C#中可以使用HttpClient对象发送HTTP请求,该对象位于System.Net.Http命名空间中。 首先需要在C#项目中引入System.Net.Http命名空间: using System.Net.Http; 然后创建HttpClient对象…

    C# 2023年5月31日
    00
  • ASP.NET缓存方法分析和实践示例代码第1/2页

    ASP.NET缓存方法是提高网站性能的重要手段之一。为了更好地理解和应用ASP.NET缓存方法,我们需要进行分析和实践。以下是ASP.NET缓存方法的攻略: 1. 缓存介绍 缓存是对于经常被查询的数据的极限优化,它可以通过减少对数据库的重复查询来提高网站的性能。在ASP.NET中,我们可以使用多种缓存方式来提高网站的性能,如Output Cache、Page…

    C# 2023年5月31日
    00
  • C#创建WebService接口并连接的全过程

    下面是关于“C#创建WebService接口并连接的全过程”的完整攻略,包含两个示例。 1. 创建WebService接口 在C#中,可以使用Visual Studio创建WebService接口。以下是一个示例: 打开Visual Studio。 选择“文件”->“新建”->“项目”。 在“新建项目”对话框中,选择“ASP.NET Web应用程…

    C# 2023年5月15日
    00
  • .NET使用YARP根据域名转发实现反向代理

    以下是“.NET使用YARP根据域名转发实现反向代理”的完整攻略: 什么是YARP YARP(Yet Another Reverse Proxy)是一个开源的反向代理组件由微软开发。它是一个轻量级、高性能、可扩展的反向代理组件,可以用于构建高性能的服务网关、API网关等。 YARP的特性 YARP具有以下特性: 支持HTTP、HTTPS、WebSocket等…

    C# 2023年5月12日
    00
  • C#中Byte转换相关的函数

    下面是 C# 中 Byte 转换相关的函数的完整攻略: 1. Byte 转换为字符串 方法一:ToString() 使用 Byte 类型的 ToString() 方法可以将 Byte 类型转换为字符串类型。 byte number = 97; string str = number.ToString(); 方法二:BitConverter.ToString(…

    C# 2023年6月7日
    00
  • C#实现协同过滤算法的实例代码

    关于“C#实现协同过滤算法的实例代码”的完整攻略,我会在以下几个方面进行详细讲解: 协同过滤算法的原理及实现流程 C#语言中实现协同过滤算法的步骤和技巧 两个具体的案例说明,以便读者更好的理解和应用 首先,我们来介绍协同过滤算法的原理及实现流程。 一、协同过滤算法原理及实现流程 协同过滤算法是一种常见的推荐算法,其基本思想是依据用户的历史行为,挖掘用户的个人…

    C# 2023年5月31日
    00
  • C#调用打印机实现打印

    下面就为大家详细讲解“C#调用打印机实现打印”的完整攻略。 1. 获取打印机列表 在C#中,我们可以通过System.Drawing.Printing.PrinterSettings.InstalledPrinters属性获取已安装的打印机列表。 foreach (string printer in System.Drawing.Printing.Print…

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