2013-01-23 163 views
3

我想知道如何声明/初始化字典? 下面的错误。初始化字典<字符串,列表<string>>

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

List <string> MyList = new List<string>() { "1" }; 

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

+0

http://stackoverflow.com/a/14472283/922198 –

+0

“给出了一个错误”。凉。谨慎分享错误? :/ –

+3

如果这些是实例字段,则不能单独使用字段初始值设定项来完成。您必须在构造函数中初始化字典。 –

回答

4

正如Scott张伯伦在his answer说:

如果这些非静态字段定义,你不能使用领域 初始化这样的,你必须把数据在构造函数中。

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 } 

}; 
+0

..这是不正确的。看到这个:http://stackoverflow.com/a/14472392/1517578 –

+0

@SimonWhitehead - 固定thnx! –

4

如果这些非静态字段定义,你不能使用字段初始这样,你必须把数据在构造函数中。

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 } 
     }; 
    } 
} 
3
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" } } 
}; 
相关问题