2013-03-19 155 views
4

我的语法有什么问题?我希望能够用这个info["Gen"]["name"]C#嵌套字典

public var info = new Dictionary<string, Dictionary<string, string>> { 
    {"Gen", new Dictionary<string, string> { 
    {"name", "Genesis"}, 
    {"chapters", "50"}, 
    {"before", ""}, 
    {"after", "Exod"} 
    }}, 
    {"Exod", new Dictionary<string, string> { 
    {"name", "Exodus"}, 
    {"chapters", "40"}, 
    {"before", "Gen"}, 
    {"after", "Lev"} 
    }}}; 
+4

你会得到什么编译器错误? – 2013-03-19 13:44:36

+2

你在'var'这个词上得到了一个编译错误..? – MethodMan 2013-03-19 13:45:13

+3

除了错误的实际原因之外,当你真的想要一个简单的'Chapter'类时,为什么你会使用'Dictionary '作为值呢? – 2013-03-19 13:46:46

回答

22

来获取值“创世纪”,则不能定义使用var类字段。

变化varDictionary<string, Dictionary<string, string>>

public Dictionary<string, Dictionary<string, string>> info = 
    new Dictionary<string, Dictionary<string, string>> 
    { 
     { 
      "Gen", 
      new Dictionary<string, string> 
      { 
       {"name", "Genesis"}, 
       {"chapters", "50"}, 
       {"before", ""}, 
       {"after", "Exod"} 
      } 
     }, 
     { 
      "Exod", 
      new Dictionary<string, string> 
      { 
       {"name", "Exodus"}, 
       {"chapters", "40"}, 
       {"before", "Gen"}, 
       {"after", "Lev"} 
      } 
     } 
    }; 

,了解更多有关var关键字及其用法见here

1

MSDN;当一个局部变量的声明和初始化在同一语句

  • VAR只能用;该变量不能被初始化为空,或者被方法组或匿名函数所使用。

  • var不能用于类范围的字段。

  • 使用var声明的变量不能在初始化 表达式中使用。

只要改变你的varDictionary<string, Dictionary<string, string>>。喜欢;

public Dictionary<string, Dictionary<string, string>> info = 
    new Dictionary<string, Dictionary<string, string>>{}