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日

相关文章

  • c#中设置快捷键

    设置快捷键可以方便用户快速执行某些操作,提高使用效率。在c#中,可以通过以下方式设置快捷键: 在窗体上设置快捷键 在窗体上选中某个控件或者整个窗体,然后在属性窗口中找到“ShortcutKeys”属性,选择想要设置的快捷键即可。比如,给窗体设置快捷键“Ctrl+S”来保存文件,代码如下: private void Form1_KeyDown(object s…

    C# 2023年6月6日
    00
  • C#.NET实现网页自动登录的方法

    下面我会详细讲解如何使用C#.NET实现网页自动登录的方法。 一、需要用到的工具和技术 HttpWebRequest类:C#中提供的Http请求发送类,用于请求Web页面并获取响应数据。 CookieContainer类:C#中提供的Cookie容器,用于管理发送和接收的Cookie信息。 HtmlAgilityPack类库:第三方类库,用于解析HTML文本…

    C# 2023年6月1日
    00
  • 分享C#操作内存读写方法的主要实现代码

    整体攻略: C#内存操作需要使用System.Runtime.InteropServices命名空间,创建一个Managed代码,来调用Unmanaged C或C++ API,从而实现内存读写。 了解C#的指针类型,使用指针指向内存地址,来进行内存操作。 注意内存读写过程中需要保证线程的安全性,避免数据竞争等问题。 具体实现: 首先需要引入System.Ru…

    C# 2023年6月1日
    00
  • 解析如何利用一个ASP.NET Core应用来发布静态文件

    解析如何利用一个ASP.NET Core应用来发布静态文件 在本攻略中,我们将深入讲解如何利用一个ASP.NET Core应用来发布静态文件,并提供两个示例说明。 准备工作 在开始发布静态文件之前,您需要完成以下准备工作: 在ASP.NET Core应用程序中安装Microsoft.AspNetCore.StaticFiles包。 dotnet add pa…

    C# 2023年5月17日
    00
  • 带着问题读CLR via C#(笔记一)CLR的执行模型

    让我来详细讲解一下“带着问题读CLRviaC#(笔记一)CLR的执行模型”的完整攻略。 问题 首先,我们需要了解本文所要解决的问题是什么。本文所讨论的问题是CLR的执行模型,具体来说,就是CLR是如何执行.NET程序的。 步骤 接下来,让我们来看看解决这个问题的步骤: 阅读CLRviaC#这本书,这是一本深入讲解CLR的经典著作。 掌握CLR的执行模型,即C…

    C# 2023年5月15日
    00
  • C#调用Python模块的方法

    下面我来详细讲解C#调用Python模块的方法。步骤如下: 步骤一:安装Python环境以及Python的第三方库 在C#中调用Python模块之前,需要先安装Python环境以及需要用到的第三方库。推荐使用Anaconda安装Python环境,因为其中包含了很多常用的第三方库。 需安装的第三方库:- numpy:提供了丰富的数组操作方法;- pandas:…

    C# 2023年6月7日
    00
  • C#跨PC远程调用程序并显示UI界面

    下面是详细的攻略。 概述 跨PC远程调用程序并显示UI界面需要使用C#语言,具体实现主要依赖于.NET Remoting和WCF两种技术。 .NET Remoting技术在.NET Framework 4.0之后已经被标记为过时,官方推荐使用WCF进行远程调用和通信。因此,在本文中,我们将主要使用WCF技术进行跨PC远程调用。 步骤 下面是跨PC远程调用程序…

    C# 2023年6月6日
    00
  • C#中+=是什么意思及+=的用法

    当我们在C#中使用“+=”时,它实际上是一个复合赋值运算符,旨在在现有变量的基础上添加新值。这个符号结合了加号“+”和赋值号“=”,并简化了代码,使其更易读。 使用“+=”的基本语法如下: variable += newValue; 其中,variable是要添加值的变量,newValue是要添加到variable的新值。如果variable中有旧值,则ne…

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