C# Dictionary 遍历方法全解析
<p>遍历C#Dictionary有多种方式,最常用的是使用foreach直接遍历KeyValuePair,适合同时访问键和值;若只需键或值,可分别遍历Keys或Values集合以提升效率;需要精细控制时可用GetEnumerator手动遍历;遍历时不可直接修改字典,否则会抛出异常,应先缓存需删除的键再操作。</p>
遍历C# Dictionary有多种方式,最常用的是使用foreach直接遍历KeyValuePair,适合同时访问键和值;若只需键或值,可分别遍历Keys或Values集合以提升效率;需要精细控制时可用GetEnumerator手动遍历;遍历时不可直接修改字典,否则会抛出异常,应先缓存需删除的键再操作。

在 C# 中,遍历 Dictionary
1. 使用 foreach 遍历 KeyValuePair
最常用的方式是使用 foreach 循环直接遍历字典,每次获取一个 KeyValuePair这种方式简单直观,适合同时访问键和值。
示例:Dictionaryages = new Dictionary
{
{ "Alice", 25 },
{ "Bob", 30 },
{ "Charlie", 35 }
};
foreach (var kvp in ages)
{
Console.WriteLine($"Name: {kvp.Key}, Age: {kvp.Value}");
}
2. 分别遍历 Keys 或 Values 集合
如果只需要键或只需要值,可以直接遍历 Keys 或 Values 属性。这样可以减少不必要的数据访问,提高可读性。
- 遍历所有键:
foreach (var key in ages.Keys)
{
Console.WriteLine("Key: " + key);
}
- 遍历所有值:
foreach (var value in ages.Values)
{
Console.WriteLine("Value: " + value);
}
3. 使用 GetEnumerator 手动遍历
适用于需要更精细控制遍历过程的场景,比如在特定条件下跳出或继续。通过 GetEnumerator() 获取枚举器,手动调用 MoveNext() 和访问 Current。
示例:
var enumerator = ages.GetEnumerator();注意:通常推荐使用 foreach,除非有特殊控制需求。
while (enumerator.MoveNext())
{
var current = enumerator.Current;
Console.WriteLine($"Key: {current.Key}, Value: {current.Value}");
}
4. 在遍历时安全地修改字典
不能在 foreach 遍历过程中直接添加或删除元素,否则会抛出 InvalidOperationException。如果需要删除满足条件的项,应先收集键,再单独操作:
var keysToRemove = ages.Where(kvp => kvp.Value < 30)
.Select(kvp => kvp.Key)
.ToList();
foreach (var key in keysToRemove)
{
ages.Remove(key);
}
基本上就这些。根据实际需要选择遍历方式,日常开发中 foreach(var kvp in dict) 最实用也最清晰。
Windows 10 是一款微软推出的经典操作系统,拥有硬件兼容性与多任务处理能力。它更偏向把系统状态查看和常用调节动作放在一起,适合需要持续观察和微调设备状态的场景。
极度公式是一款跨平台专业LaTeX公式识别编辑软件,支持OCR公式识别和多平台编辑。和使用说明,避免使用,享受完整功能与稳定支持。做扫描整理、文字提取和表格转换时,它能把识别后的处理步骤接得更顺,资料录入这类场景会省下不少时间。
















