为什么在动态编程期间字典“不包含'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”
但是相反,我们会收到运行时错误:“不包含'ElementAt'的定义”
如果您输入:
Dictionary<string, dynamic> var1 = D2.ElementAt(1).Value;
textBox1.Text += var1.ElementAt(1).Value;
然后它将正常工作!
最佳答案
这里有两件事是错误的:
您假设添加到D2
的第二个条目是D2.ElementAt(1)
检索的条目。不要做这样的假设:字典基本上是无序的。
您正在对Enumerable.ElementAt
类型的表达式调用扩展方法(dynamic
)
您可以通过显式调用Enumerable.ElementAt
作为静态方法来解决第二个问题:
textBox1.Text += Enumerable.ElementAt(D2.ElementAt(1).Value, 1).Value;
但是,这仍然将第一部分作为问题。目前尚不清楚您要实现的目标,这意味着尚不清楚我应该针对该部分建议什么解决方案...
关于c# - 为什么字典“不包含'ElementAt'的定义”?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/32997696/