foreach 中对 Dictionary 的解构

2024-03-24

在 C#7 中是否可以在字典的 foreach 循环中使用解构?像这样的事情:

var dic = new Dictionary<string, int>{ ["Bob"] = 32, ["Alice"] = 17 };
foreach (var (name, age) in dic)
{
    Console.WriteLine($"{name} is {age} years old.");
}

它似乎不适用于 Visual Studio 2017 RC4 和 .NET Framework 4.6.2:

错误 CS1061:“KeyValuePair”不包含“Deconstruct”的定义,并且找不到接受“KeyValuePair”类型的第一个参数的扩展方法“Deconstruct”(您是否缺少 using 指令或程序集引用?)


如果你不喜欢写Deconstruct方法,尤其是如果您只在一个地方需要它时,以下是如何使用 LINQ 将其作为单行代码执行:

使用你原来的字典:

var dic = new Dictionary<string, int>{ ["Bob"] = 32, ["Alice"] = 17 };

你可以这样做:

foreach (var (name, age) in dic.Select(x => (x.Key, x.Value)))
{
    Console.WriteLine($"{name} is {age} years old.");
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

foreach 中对 Dictionary 的解构 的相关文章

随机推荐

  • 为什么在使用 setRequestHeader 发出 xmlhttprequest 时无法设置 cookie 和 set-cookie 标头?

    我想知道为什么不能设置cookie使用 setRequestHeader 来设置标头 是否有任何特定原因或只是它们是由浏览器本身添加的 因此这些标头被禁用 是否存在安全问题 Edit 我正在使用 Node js 并使用xmlhttprequ
  • 从上到下 - 翻译动画

    需要制作下一个动画 在android 2 2及以上版本 1 从上到下移动按钮 点击他后 2 从下往上移动 再次点击他后 第一个动画工作正常 但第二个动画不行 btn 从下到上 跳跃 并且没有动画 Code public class Main
  • Javascript keyup 无法按预期工作,它会在我没有将手指从按钮上移开的情况下执行

    我正在尝试用 javascript 创建一个简单的游戏 但我陷入了如何处理按键的困境 小例子 function keyUpEvent event alert event keyCode window addEventListener key
  • 使用 Scipy/python 寻找峰值的算法

    我有随机数据 在其中绘制了图表以查找源自零的峰值我使用了此代码 op col for i in df Speed op col append i print op col 使用 for 循环将 速度 值转换为一维数组 0 7 18 24 2
  • VB.Net 中接口中定义的属性的受保护集

    我们有一个界面 可以大大简化为 public interface IPersistable
  • CSS3 缩放变换和溢出问题:在 Safari 上隐藏

    我在 Safari 上遇到缩放变换效果和溢出问题 当我在 div 内容上使用此效果时 溢出在圆形容器上不起作用 这是我的代码 container width 100px height 100px border radius 50 backg
  • Visual Studio 2010 工具箱为空

    我有 Visual Studio 2010 Professional 但不知何故我的工具箱几乎空了 我有 报告 ReportViewer Visual Basic 电源包 a few basic items like line and ov
  • 如何在表单对话框中接收附件?

    我目前有一个机器人对话框 它请求并接收用户的附件 我想将其转换为表单对话框 因为我认为这更适合 请向我发送文档1 直到文档N 您能给我指出一个接收用户附件的表单对话框的示例吗 我读到 FormFlow 现在支持附件 https github
  • node-postgres 是否支持多个结果集

    我有一个返回多个结果集的 PostgresQL 函数 我可以毫无问题地在 net 中提取这些结果集 所以我知道我的函数可以正常工作 但我在使用 node postgres 时遇到了麻烦 结果对象返回一个包含 7 个项目的数组 该数组与返回的
  • 更改 Kubernetes docker-for-desktop 集群网络 ip

    我正在尝试在 docker for desktops 上配置 Kubernetes 并且想要更改分配给容器的默认网络 示例 默认网络是10 1 0 0 16但我想要172 16 0 0 16 I changed the docker net
  • 无法在 ViewComponent 中加载脚本

    我创建了一个ViewComponent其中显示一个Table需要一些插件来启用特定功能 在 的里面ViewComponent我尝试创建一个特定的部分 section DataTableScripts 不幸的是我发现一个ViewCompone
  • 复制和区分表单的各个部分

    更新 使用colecmc提供的代码 谢谢 我更新了codepen 我喜欢添加 date now 的方式 但我只想增量增加 我不确定如何将其应用到这个函数中 我尝试了 zer00ne 的索引增量 但我做错了 let cloneList ind
  • 在 jenkins 中完全跳过执行 shell 步骤

    我似乎无法在 Jenkins 中运行构建执行 shell 步骤 我过去曾在 Windows 上与 Hudson 合作 并且能够毫无问题地创建 shell 批处理步骤 但我似乎在这里遗漏了一些东西 这是一个全新的 jenkins 安装 我进入
  • 为什么 PHP 错误打印两次?

    Summary 令人惊讶的是我在谷歌或SO上找不到任何关于此的信息 当我在 PHP 中引发异常时 它会在我的控制台中出现两次 并包含错误消息和堆栈跟踪 第一次打印时显示 PHP Fatal error 第二次打印时仅显示 Fatal err
  • “用户正在输入消息”功能...?

    只是要指出 我指的是用 PHP jQuery 编写的聊天系统 您可以在底部看到 用户正在输入消息 我尝试了很多方法来完成它 但都失败了 我构建了自己的用 PHP MySQL Ajax jQuery 编写的聊天系统 我并不是要求某人为我编写该
  • 使用 Excel 宏 VBA 在 Excel 范围内查找行的最快方法

    我有一个 Excel 电子表格 sheet2 其中记录的数量约为 100 万条 我正在迭代这些记录 并且对于每次迭代 我都会将一行选定的列与sheet1 中大约2000 条记录的另一个范围进行比较 rangeA 1 Million rows
  • 在 Ember-CLI 内升级 Ember

    我刚刚创建了一个新的Ember CLI http www ember cli com app v0 1 12 并注意到 Ember 的引用版本是 v1 8 1 bower json 我想得到最近发布了1 10 http emberjs co
  • 在scala中使用正则表达式提取字符串

    我有一个用例 我想从 scala 的输入中提取某些字符串 我的输入字符串看起来像 asdwf ssdf as232 ss ABC xxx sdfsf234 sdaf 我想提取xxx after ABC 我尝试定义正则表达式匹配模式 val
  • WPF 控件是否在其绑定中使用弱事件?

    当我在 WPF 中使用数据绑定时 我的目标控件正在侦听绑定源上的事件 例如 我可能有一个ListView http msdn microsoft com en us library system windows controls listv
  • foreach 中对 Dictionary 的解构

    在 C 7 中是否可以在字典的 foreach 循环中使用解构 像这样的事情 var dic new Dictionary