c#:字符串和字典词典中的字符串和列表字典

时间:2018-11-21 22:50:56

标签: c# dictionary

我想创建<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#上浏览类似的问题,然后得到以下问题:

Why am i getting "No overload method for Add takes 1 argument" when adding a Dictionary to a List of Dictionaries

但是经过这个过程,我感到使用列表变量名代替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中具有内部字典且具有列表的字典进行操作?

2 个答案:

答案 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);
    }
}