为什么Dictionary "没有包含'element '"的定义

本文关键字:quot element 定义 Dictionary 为什么 包含 | 更新日期: 2023-09-27 18:16:25

为什么动态规划时字典"不包含" ElementAt "的定义

        Dictionary<string, dynamic> D1 = new Dictionary<string, dynamic>();
        D1.Add("w1", 10);
        D1.Add("w2", false);
        Dictionary<string, dynamic> D2 = new Dictionary<string, dynamic>();
        D2.Add("v1", 10);
        D2.Add("v2", D1);
        textBox1.Text += D2.ElementAt(1).Value.ElementAt(1).Value;

我们应该得到textbox1 "false"的结果
但是我们会得到运行时错误:"does not contain a definition for 'ElementAt'"

如果你要输入:

        Dictionary<string, dynamic> var1 = D2.ElementAt(1).Value;
        textBox1.Text += var1.ElementAt(1).Value;

那么它将正常工作!

为什么Dictionary "没有包含'element '"的定义

对我来说,另一个解决方案是我需要添加一个对System的引用。Linq和一切工作,不需要修改代码

这里有两个错误:

  • 您假设添加到D2的第二个条目是D2.ElementAt(1)检索的条目。不要这样假设:字典基本上是无序的。
  • 你正在调用扩展方法(Enumerable.ElementAt)对dynamic类型的表达式
您可以通过显式调用Enumerable.ElementAt作为静态方法来解决第二个问题:
textBox1.Text += Enumerable.ElementAt(D2.ElementAt(1).Value, 1).Value;

这仍然会使第一部分成为一个问题。不清楚你想要实现什么,这意味着不清楚我应该建议什么修复…