遍历 Dictionary,你会几种方式?
2024-10-21 13:28:02
一:背景
1. 讲故事
昨天在 StackOverflow 上看到一个很有趣的问题,说: 你会几种遍历字典的方式,然后跟帖就是各种奇葩的回答,挺有意思,马上就要国庆了,娱乐娱乐吧,说说这种挺无聊的问题。
二: 使用 foreach 遍历
为了方便演示,先上一段测试代码:
var dict = new Dictionary<int, string>()
{
[10] = "A10",
[20] = "A20",
[30] = "A30",
[40] = "A40",
[50] = "A50"
};
1. 直接 foreach dict
如果要拿百分比说话,估计有 50%+ 的小伙伴用这种方式,为啥,简单粗暴呗,其他没什么好说的,直接上代码:
foreach (var item in dict)
{
Console.WriteLine($"key={item.Key},value={item.Value}");
}
这里的 item 是底层在 MoveNext 的过程中用 KeyValuePair 包装出来的,如果你不信的话,看下源码呗:
public bool MoveNext()
{
while ((uint)_index < (uint)_dictionary._count)
{
ref Entry reference = ref _dictionary._entries[_index++];
if (reference.next >= -1)
{
_current = new KeyValuePair<TKey, TValue>(reference.key, reference.value);
return true;
}
}
}
2. foreach 中 使用 KeyPairValue 解构
刚才你也看到了 item 是 KeyValuePair 类型,不过
最新文章
- C#中timer类的用法
- 关于DMA和它的仇家
- 亲测!阿里云公共DNS,感觉不错!
- 2,SFDC 管理员篇 - 组织架构
- 数字电路-异同步 复位 线与 oc门
- python datetime模块用strftime 格式化时间
- Java单例类的简单实现
- .net中判断距离高考多长时间的js函数
- codeforces 390D	 Inna and Sweet Matrix
- .net(全局文件,错误页,静态页,IIS配置及防黑)
- OD调试4--去除NAG窗口
- 数据保存策略(Retention Policies)
- Ubuntu命令用法详解——curl命令
- 深圳市共创力推出独家课程《AHB和OSG》高级实务培训课程!
- sublime----------快捷键的记录
- Linux - 包不同安装方式
- 29-jsp中用js进行时间格式转化
- Java图形处理
- 从零自学Java-7.使用数组存储信息
- HTML5+ App开发入门