初始化字典<字符串,列表<字符串>>

本文关键字:字符串 字典 列表 初始化 | 更新日期: 2023-09-27 17:55:10

我想知道如何声明/初始化字典?下面的一个给出了错误。

Dictionary<string, List<string>> myD = new Dictionary<string, List<string>>()
{
  {"tab1", MyList }
};
List <string> MyList = new List<string>() { "1" };

错误是:字段初始值设定项无法引用非静态字段、方法或属性 MyList。 它不是列表声明在字典前面或之后。

初始化字典<字符串,列表<字符串>>

class MyClass
{
    Dictionary<string, List<string>> myD = new Dictionary<string, List<string>>()
    {
        {"tab1", new List<string> { "1" } },
        {"tab2", new List<string> { "1","2","3" } },
        {"tab3", new List<string> { "one","two" } }
    };
}

正如斯科特·张伯伦(Scott Chamberlain)在回答中所说:

如果这些是非静态字段定义,则不能使用该字段 像这样的初始值设定项,您必须将数据放在构造函数中。

class MyClass
{
    Dictionary<string, List<string>> myD;        
    List <string> MyList;
    public MyClass()
    {
        MyList = new List<string>() { "1" };
        myD = new Dictionary<string, List<string>>()
        {
          {"tab1", MyList }
        };
    }
}

另外对于静态字段

private static List<string> MyList = new List<string>()
{    
   "1"
};
private static Dictionary<string, List<string>> myD = new Dictionary<string, List<string>>()
{
    {"tab1", MyList }
};

如果这些是非静态字段定义,则不能像这样使用字段初始值设定项,则必须将数据放在构造函数中。

class MyClass
{
    Dictionary<string, List<string>> myD;        
    List <string> MyList;
    public MyClass()
    {
        MyList = new List<string>() { "1" };
        myD = new Dictionary<string, List<string>>()
        {
          {"tab1", MyList }
        };
    }
}