C#“字典”Dictionary的用法

这篇具有很好参考价值的文章主要介绍了C#“字典”Dictionary的用法。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

C#中的Dictionary是一种特殊的数据集合。因为它由键值,和数值组成,并且一一对应,通过键值我们就可以查询到对应的数值,就好像查字典一样,故而我们会形象地称呼它为“字典”。据于它们这种特殊地结构,C#定义了它很多地属性与方法,在实际应用中非常实用。

一、结构

Dictionary的结构是这样的:Dictionary<[key],[value]>,所引用的命名空间是:System.Collections.Generic。

二、定义

关于Dictionary的定义,它必须遵循一下规则:

1、键值(key)与(value),一一映射,共同关联组成一个键值对

2、任何的键都是唯一的

3、键不能为空(若值为引用类型,则可以为空)

4、key和value可以是任意类型

三、创建与初始化

Dictionary<[key],[value]> mDic = new Dictionary<[key],[value]>();

例:Dictionary<int,int> mDic = new Dictionary<int,int>();

四、使用技巧

1、添加元素:Add

例:

mDic.Add(1,1);

mDic.Add(2,1);

mDic.Add(3,2);

2、删除元素:Remove

例:

mDic.Remove(1);  //移除指定键的键值

3、查询字典中是否包含指定的键:ContainsKey

例:

if(mDic.ContainsKey(1))  //先判断是否存在这样的键
{       
   Console.WriteLine(“字典中含有这个键”);
}

4、通过key获取对应的值:Dictionary[key]

例:

if(mDic.ContainsKey(1))  //先判断是否存在这样的键
{       
   Console.WriteLine(mDic[1]);
}

5、遍历键值对:KeyValuePair

例:

foreach(KeyValuePair<int,int> temp in mDic)
{
   Console.WriteLine("Key = {0}, Value = {1}",temp.Key, temp.Value);
}

6、遍历所有键与所有键值:Keys(Dictionary<T,T>.KeyCollection),Values(Dictionary<T,T>.ValueCollection)

foreach(var key in mDic.Keys)
{
   Console.WriteLine(key);  //获取所有键
}
foreach(var value in mDic.Values)
{
   Console.WriteLine(value); //获取所有键值
}

7、获取与指定的键相关联的值: public bool TryGetValue(TKey key, out TValue value);

例:

int val = null;
mDic.TyrGetValue(1,out val);
Console.WriteLine(val);

8、对Dictionary进行排序的一个方法

例:

mDic.Add(1,1);
mDic.Add(3,3);
mDic.Add(5,5);
mDic.Add(6,6);
mDic.Add(4,4);
mDic.Add(2,2);
var result = from pair in mDic orderby pair.Key select pair;

foreach (KeyValuePair<int, int> pair in result)
{
  Console.WriteLine("Key:{0}, Value:{1}", pair.Key, pair.Value);
}

//Key:1, Value:1
//Key:2, Value:2
//Key:3, Value:3
//Key:4, Value:4
//Key:5, Value:5
//Key:6, Value:6

9、对Dictionary求交集、差集、并集

例:

Dictionary<int, int> Dic1 = new Dictionary<int, int>();
for (int i = 0; i < 10; i++)
{
  Dic1.Add(i, i);
}

Dictionary<int, int> Dic2 = new Dictionary<int, int>();
for (int i = 5; i < 15; i++)
{
  Dic2.Add(i, i);
}

//求交集

var jj = Dic1.Keys.Intersect(Dic2.Keys);
foreach (var i in jj)
{
   Console.Write(i + " ");
}

//求差集
var cj = Dic1.Keys.Except(Dic2.Keys);

foreach (var i in cj)
{
   Console.Write(i + " ");
}

//求并集
var bj = Dic1.Keys.Union(Dic2.Keys);

foreach (var i in bj)
{
   Console.Write(i + " ");
}

五、其它常用属性与方法的说明

Comparer:           获取用于确定字典中的键是否相等的 IEqualityComparer。

  Count:                  获取包含在 Dictionary中的键/值对的数目。

  Item:                    获取或设置与指定的键相关联的值。

  Keys:                   获取包含 Dictionary中的键的集合。

  Values:                获取包含 Dictionary中的值的集合。

  Add:                    将指定的键和值添加到字典中。

  Clear:                  从 Dictionary中移除所有的键和值。

  ContainsKey:      确定 Dictionary是否包含指定的键。

  ContainsValue:   确定 Dictionary是否包含特定值。             

  GetEnumerator:  返回循环访问 Dictionary的枚举数。

  GetType:             获取当前实例的 Type。 (从 Object 继承。)

  Remove:             从 Dictionary中移除所指定的键的值。

  ToString:             返回表示当前 Object的 String。 (从 Object 继承。)

  TryGetValue:      获取与指定的键相关联的值。文章来源地址https://www.toymoban.com/news/detail-546830.html

到了这里,关于C#“字典”Dictionary的用法的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • C# Dictionary中GetEnumerator()方法

    Dictionarystring, string 中的 GetEnumerator() 方法是用于遍历字典中的键值对。它会返回一个 IEnumeratorstring 对象,该对象可以用于按照键的顺序迭代字典中的所有键值对。 具体来说, GetEnumerator() 方法会返回一个 IEnumeratorstring 对象,该对象包含了三个属性: Current :当前迭代到的键

    2024年02月12日
    浏览(37)
  • C#监听Dictionary、List的写入操作

    在开发中,对于内置值类型和string我们可以通过封装属性在 Set 中监听写入操作,但是对于 Dictionary 、 List 等就不能监听到 Add 、 Remove 等写入操作。 所以一般采取两种方式监听它们的读写操作,一种是封装操作方法,间接进行监听,第二种就是重写 Add 和 Remove 等方法。下面

    2024年01月17日
    浏览(40)
  • C#中的HashTable和Dictionary之间的区别

    HashTable和Dictionary都是用于存储数据的数据结构的类型。这两个数据结构都将存储的数据保存为键值对。

    2024年02月17日
    浏览(51)
  • C#中Dictionary与ConcurrentDictionary解锁多线程操作安全之道

      在C#中, Dictionary 是一个常见的字典类型,但它不是线程安全的。为了在多线程环境中确保安全的操作,我们可以使用 ConcurrentDictionary ,这是一个专门设计用于多线程场景的线程安全字典。 首先,我们来看一个使用普通的 Dictionary 的例子。在这个例子中,我们创建一个 D

    2024年01月22日
    浏览(43)
  • 无涯教程-Python - Dictionary(字典)

    每个键都由一个冒号(:)与其值分隔,各元素之间以逗号分隔,并且整个内容都用花括号括起来。一个没有任何元素的空字典用两个大括号书写,如:{}。 键在字典中是唯一的,而值可能不是。字典的值可以是任何类型,但是键必须是不可变的数据类型,如字符串,数字或元组。

    2024年02月11日
    浏览(35)
  • Python零基础超详细教程:字典(Dictionary)相关介绍使用

    前言 嗨喽~大家好呀,这里是魔王呐 ❤ ~! Python字典是另一种可变容器模型, 且可存储任意类型对象,如字符串、数字、元组等其他容器模型。 python更多源码/资料/解答/教程等 点击此处跳转文末名片免费获取 一、创建字典 字典由键和对应值成对组成。字典也被称作关联数组

    2024年02月10日
    浏览(42)
  • Python列表(list)、元组(tuple)和字典(dictionary)的区别

    目录 列表(list)  访问列表元素  更新和删除列表元素 元组(tuple) 元组的访问、更新、删除操作  字典(dictionary)  创建空字典 修改、删除字典 总结 列表(list)、元组(tuple)和字典(dictionary)都是序列,序列都是由索引和元素组成。遍历和访问都按照如下格式: 具

    2023年04月13日
    浏览(47)
  • Redis从入门到精通【高阶篇】之底层数据结构字典(Dictionary)详解

    上个篇章回顾,我们上个章节,讲了Redis中的快表(QuickList),它是一种特殊的数据结构,用于存储一系列的连续节点,每个节点可以是一个整数或一个字节数组。快表是Redis中的底层数据结构之一,常用于存储有序集合(Sorted Set)等数据类型的底层实现。 那么本章讲解Red

    2024年02月09日
    浏览(50)
  • 电子词典dictionary

         1.登录注册功能,不能重复登录,重复注册。用户信息也存储在数据库中。      2.单词查询功能      3.历史记录功能,存储单词,意思,以及查询时间,存储在数据库      4.基于TCP,支持多客户端连接      5.采用数据库保存用户信息与历史记录      6.将dict.txt的数

    2024年02月11日
    浏览(38)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包