Visual Studio中的字典

目录

一、核心说明

二、基本模板

三、常用代码示例

四、常用方法与属性

五、注意事项

六、案例实践


一、核心说明

  • 定义Dictionary<TKey, TValue> 是泛型集合,存储无序的键值对,键(Key)唯一,值(Value)可重复。
  • 特点键不能为 null (除非 TKey 是可空类型),值可以为 null

二、基本模板

using System.Collections.Generic;

// 声明字典

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

// 示例:键为字符串,值为整数

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

三、常用代码示例

  1. 添加元素

studentScores.Add("Alice", 95);

studentScores.Add("Bob", 88);

  1. 访问元素(直接索引,键不存在时抛出异常)

int aliceScore = studentScores["Alice"]; // 95

  1. 安全访问(推荐用 TryGetValue)

if (studentScores.TryGetValue("Charlie", out int charlieScore))

{

Console.WriteLine($"Charlie's score: {charlieScore}");

}

else

{

Console.WriteLine("Charlie not found.");

}

  1. 修改值

studentScores["Bob"] = 90; // Bob的分数改为90

  1. 遍历字典

foreach (KeyValuePair<string, int> pair in studentScores)

{

Console.WriteLine($"{pair.Key}: {pair.Value}");

}

  1. 删除元素

studentScores.Remove("Alice"); // 删除键为Alice的项

四、常用方法与属性

|-----------------------------------|-----------------------------------------|
| 方法 / 属性 | 作业 |
| Add(TKey, TValue) | 添加键值对 ,键已存在时抛出 ArgumentException。 |
| Remove(TKey) | 删除指定键的项,返回是否成功。 |
| ContainsKey(TKey) | 检查是否包含指定键。 |
| TryGetValue(TKey, out TValue) | 尝试获取值,避免键不存在时抛出异常。 |
| Clear() | 清空所有项。 |
| Count | 获取键值对数量。 |
| Keys | 获取所有键 的集合(ICollection<TKey>)。 |
| Values | 获取所有值 的集合(ICollection<TValue>) |

五、注意事项

  • 键的唯一性 :添加重复键会抛出异常,建议先通过 ContainsKey 检查或使用 TryAdd: studentScores.TryAdd("Alice",95); //键已存在时返回false,不抛出异常
  • 性能优化 :初始化时指定容量(如 new Dictionary<int, string>(100))可减少扩容开销。
  • 遍历顺序 :字典是无序集合 ,遍历顺序不保证与添加顺序一致。若需有序,可使用 SortedDictionary<TKey, TValue>。
  • 线程安全:非线程安全。

六、案例实践

使用字典实现统计元素出现次数以及最大次数

static void Main(string[] args)

{

List<int> count = new List<int>

{

1,2,3,4,5,6,5,4,3,2,1,1,1,1,7,8,9,10

};

Dictionary<int,int> dic = new Dictionary<int, int>();

foreach (int i in count) //统计各个元素出现的次数

{

if (dic.ContainsKey(i))

{

dic[i]++;

}

else

{

dic[i] = 1;

}

}

int maxCount = 0; //出现次数最多元素的出现次数

int maxShu = count[0]; //出现次数最多的元素

foreach (var item in dic) //找出该元素

{

if (item.Value > maxCount)

{

maxCount = item.Value;

maxShu = item.Key;

}

}

Console.WriteLine(" 统计结果为:");

foreach (var t in dic)

{

Console.WriteLine($"{t.Key } 出现了 {t.Value} 次");

}

Console.WriteLine($"出现次数最多的元素为:{maxShu},出现了 {maxCount} 次");

Console.ReadKey();

}

相关推荐
hjxu201619 小时前
【OpenClaw 龙虾养成笔记一】在远程服务器,使用Docker安装OpenClaw
服务器·笔记·docker
sinat_2554878119 小时前
读者、作家 Java集合学习笔记
java·笔记·学习
FL162386312919 小时前
[C#][winform]segment-anything分割万物部署onnx模型一键抠图演示
开发语言·c#
非鱼䲆鱻䲜20 小时前
vscode开发stm32添加新的头文件路径和包含源文件
ide·vscode·stm32·cmake·包含头文件·包含源文件
observe10120 小时前
输入输出1
笔记
love530love21 小时前
OpenClaw 手机直连配置全流程
人工智能·windows·python·智能手机·c#·agent·openclaw
bcbobo21cn1 天前
C# byte类型和byte数组的使用
开发语言·c#·字节数组·byte类型
sanshanjianke1 天前
AI辅助网文创作理论研究笔记(五):测试环境的搭建和一些问题的讨论
人工智能·笔记·ai写作
云边散步1 天前
godot2D游戏教程系列二(18)
笔记·学习·游戏
C羊驼1 天前
C语言:随机数
c语言·开发语言·经验分享·笔记·算法