初始化字典>。

14 浏览
0 Comments

初始化字典>。

我想知道如何声明/初始化一个字典?\n下面的代码会报错。\n

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

\n错误是:字段初始化程序不能引用非静态字段、方法或属性 MyList。它不是在字典前面或后面声明的列表。

0
0 Comments

在上述代码中,出现了一个问题,即在非静态字段定义中不能像上述代码中那样使用字段初始化器。在这个例子中,我们想要初始化一个Dictionary>类型的变量myD,并将其赋值为一个包含一个键值对的字典,其中键为"tab1",值为一个List类型的变量MyList。

然而,由于这是一个非静态字段定义,因此不能直接使用字段初始化器来进行初始化。相反,我们需要在构造函数中手动进行初始化。因此,我们需要将代码修改为以下形式:

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

在修改后的代码中,我们将MyList的初始化移到了构造函数中,并使用Add方法将键值对添加到了myD中。

通过这样的修改,我们解决了代码中的问题,使得Dictionary>类型的变量myD能够正确地进行初始化赋值。

0
0 Comments

问题的原因是在非静态字段定义中无法使用字段初始化器来初始化字典(Dictionary)对象。解决方法是将数据放在构造函数中。

对于非静态字段定义,需要在构造函数中初始化字典(Dictionary)对象。具体代码如下:

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

对于静态字段定义,需要在静态字段初始化器中初始化字典(Dictionary)对象。具体代码如下:

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

这样就可以解决问题了。

0
0 Comments

在上述代码中,出现了一个问题:如何初始化一个包含字符串键和字符串列表值的Dictionary。代码中使用了泛型Dictionary类,其中键的类型为string,值的类型为List。然后,在类的构造函数中,通过使用对象初始化器语法,为字典添加了三个键值对。每个键值对的键是一个字符串,值是一个字符串列表。

解决这个问题的方法是使用Dictionary的构造函数进行初始化。可以通过传递一个实现了IDictionary接口的字典对象来完成初始化。在初始化时,可以使用对象初始化器语法为字典添加键值对。

下面是使用构造函数进行初始化的代码示例:

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" } }
    };
}

这样,就可以正确地初始化一个包含字符串键和字符串列表值的Dictionary对象。

0