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

在 C# 中,遍历 Dictionary 是常见操作。Dictionary 存储键值对,遍历时有多种方式,可根据需求选择最合适的方法。
1. 使用 foreach 遍历 KeyValuePair
最常用的方式是使用 foreach 循环直接遍历字典,每次获取一个 KeyValuePair 对象。
这种方式简单直观,适合同时访问键和值。
示例:
Dictionary ages = 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();
while (enumerator.MoveNext())
{
var current = enumerator.Current;
Console.WriteLine($"Key: {current.Key}, Value: {current.Value}");
}
注意:通常推荐使用 foreach,除非有特殊控制需求。
4. 在遍历时安全地修改字典
不能在 foreach 遍历过程中直接添加或删除元素,否则会抛出 InvalidOperationException。
如果需要删除满足条件的项,应先收集键,再单独操作:
var keysToRemove = ages.Where(kvp => kvp.Value < 30)
.Select(kvp => kvp.Key)
.ToList();
foreach (var key in keysToRemove)
{
ages.Remove(key);
}
或者使用 for 循环反向遍历(不适用于 Dictionary,因其无序),所以推荐先缓存键列表。
基本上就这些。根据实际需要选择遍历方式,日常开发中 foreach(var kvp in dict) 最实用也最清晰。
以上就是C# 怎么遍历一个 Dictionary_C# Dictionary 遍历方法详解的详细内容,更多请关注创想鸟其它相关文章!
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 chuangxiangniao@163.com 举报,一经查实,本站将立刻删除。
发布者:程序猿,转转请注明出处:https://www.chuangxiangniao.com/p/1441185.html
微信扫一扫
支付宝扫一扫