为什么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;
那么它将正常工作!
对我来说,另一个解决方案是我需要添加一个对System的引用。Linq和一切工作,不需要修改代码
这里有两个错误:
- 您假设添加到
D2
的第二个条目是D2.ElementAt(1)
检索的条目。不要这样假设:字典基本上是无序的。 - 你正在调用扩展方法(
Enumerable.ElementAt
)对dynamic
类型的表达式
Enumerable.ElementAt
作为静态方法来解决第二个问题:
textBox1.Text += Enumerable.ElementAt(D2.ElementAt(1).Value, 1).Value;
这仍然会使第一部分成为一个问题。不清楚你想要实现什么,这意味着不清楚我应该建议什么修复…