一:背景

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 类型,不过

最新文章

  1. C#中timer类的用法
  2. 关于DMA和它的仇家
  3. 亲测!阿里云公共DNS,感觉不错!
  4. 2,SFDC 管理员篇 - 组织架构
  5. 数字电路-异同步 复位 线与 oc门
  6. python datetime模块用strftime 格式化时间
  7. Java单例类的简单实现
  8. .net中判断距离高考多长时间的js函数
  9. codeforces 390D Inna and Sweet Matrix
  10. .net(全局文件,错误页,静态页,IIS配置及防黑)
  11. OD调试4--去除NAG窗口
  12. 数据保存策略(Retention Policies)
  13. Ubuntu命令用法详解——curl命令
  14. 深圳市共创力推出独家课程《AHB和OSG》高级实务培训课程!
  15. sublime----------快捷键的记录
  16. Linux - 包不同安装方式
  17. 29-jsp中用js进行时间格式转化
  18. Java图形处理
  19. 从零自学Java-7.使用数组存储信息
  20. HTML5+ App开发入门

热门文章

  1. MySQL 索引结构
  2. CentOS7(Linux)源码安装Redis
  3. VSCode 快速生成.vue基本模板、发送http请求模板
  4. Selenium中核心属性以及方法
  5. 测试必须学spring RESTful Service(上)
  6. Illegal instruction报错 c/c++
  7. 【Android】SwipeRefreshLayout的简单使用教程。下拉刷新控件炫酷效果。
  8. Activiti7 绑定业务主键以及流程定义 流程实例的挂起和激活
  9. C#知识点:ref和Out关键字浅谈
  10. django之admin配置