我想创建<string, Dictionary>
类型的Dictionary,其中内部Dictionary的类型为<string, List<string>>
。
我为此编写了以下代码:
using System.IO ;
using System.Collections ;
using System.Collections.Generic ;
class nm {
public static void Main () {
Dictionary<string, Dictionary<string, List<string>>> dicdic = new Dictionary<string, Dictionary<string, List<string>>>();
Dictionary<string, List<string>> fr = new Dictionary<string, List<string>>();
Dictionary<string, List<string>> subdicdic = new Dictionary <string , List<string>>() ;
List<string> p = new List<string>();
p.Add("bro, you feel me ") ;
subdicdic.Add(new KeyValuePair<string, List<string>>("ll", p));
fr.Add(new KeyValuePair("foo", subdicdic)) ;
}
}
但是在尝试使用Windows命令提示符下的csc对其进行编译时,在第18行出现了以下编译错误:
fr.Add(new KeyValuePair("foo", subdicdic)) ;
陈述以下内容:
“方法'Add'的重载不接受'1'参数”
我在c#上浏览类似的问题,然后得到以下问题:
但是经过这个过程,我感到使用列表变量名代替list可能会有一些限制。但是我不确定。
我也遇到了以下问题:
Adding a key value pair in a dictionary inside a dictionary
尽管以上内容可能有助于获得我要编写的目标代码的替代解决方案。
但是现在我想知道是什么阻止了我将此列表添加为字典的值。
我的编译器的版本详细信息:
Microsoft(R)Visual C#2005编译器版本8.00.50727.8922 适用于Microsoft(R)Windows(R)2005 Framework版本2.0.50727
这里可能是什么问题? 如何使用.net 2.0中具有内部字典且具有列表的字典进行操作?
答案 0 :(得分:2)
简短的答案,您正在尝试使用不存在的方法的重载。
Add
类上的Dictionary<T1, T2>
方法不支持直接传递KeyValuePair<T1, T2>
。通过Add
方法可用的唯一模式是Add(T1 key, T2 value);
。
您需要更改以下行:将subdicdic.Add(new KeyValuePair<string, List<string>>("ll", p));
更改为subdicdic.Add("ll", p);
我应该注意,您将在下一行遇到完全相同的问题,并且需要进行类似的调整。
我已创建a working .NET Fiddle example来解决此问题。
答案 1 :(得分:1)
您尝试过这种方式吗?
using System.IO;
using System.Collections;
using System.Collections.Generic;
class nm
{
public static void Main()
{
var dicdic = new Dictionary<string, Dictionary<string, List<string>>>();
var subdicdic = new Dictionary<string, List<string>>();
var p = new List<string>();
p.Add("bro, you feel me ");
subdicdic.Add("ll", p);
dicdic.Add("foo", subdicdic);
}
}