【问题标题】:There is no argument given that corresponds to the required formal parameter 'value' of Dictionary<string, string>.Add(string, string) [duplicate]没有给出与 Dictionary<string, string>.Add(string, string) 所需的形式参数“value”相对应的参数 [重复]
【发布时间】:2018-04-17 08:27:34
【问题描述】:

我尝试用这种方式构造Dictionary&lt;string, Dictionary&lt;string, string&gt;&gt;的实例,

Dictionary<string,  Dictionary<string, string>> PredictiveTable =
            new Dictionary<string, Dictionary<string, string>>(){
                {"+", new Dictionary<string, string>() {"E","error"}},
                {"*", new Dictionary<string, string>() {"E","error"}},
                {"i", new Dictionary<string, string>() {"E","E->TK"}},
                {"(", new Dictionary<string, string>() {"E","E->TK"}},
                {")", new Dictionary<string, string>() {"E", "error"}},
                {"#", new Dictionary<string, string>() {"E", "error"}}
};

但是编译器只是告诉错误信息

CS7036 C# 没有给出与所需形式相对应的参数 Dictionary.Add(string, string)

的参数'value'

我之前尝试搜索错误提示,但找不到解决方法。

如果有人可以帮助我,我将不胜感激。

【问题讨论】:

    标签: c# dictionary


    【解决方案1】:
    Dictionary<string, Dictionary<string, string>> PredictiveTable =
                new Dictionary<string, Dictionary<string, string>>(){
                    {"+", new Dictionary<string, string>() {{"E","error"}}},
                    {"*", new Dictionary<string, string>() {{"E","error" }}},
                    {"i", new Dictionary<string, string>() {{ "E","E->TK"}}},
                    {"(", new Dictionary<string, string>() {{"E","E->TK"}}},
                    {")", new Dictionary<string, string>() {{"E", "error"}}},
                    {"#", new Dictionary<string, string>() {{ "E", "error"}}}
    };
    

    new Dictionary&lt;string, string&gt;() 期望 KeyPairValues 的 collection 用于初始化(就像您对外部 Dictionary 所做的那样)。你只通过了一个。

    所以

    new Dictionary<string, string>() {"E","error"}
    

    变成

    new Dictionary<string, string>() {
        {"E","error"}
    }
    

    【讨论】:

      【解决方案2】:

      尝试遵循此语法。

      在您的代码中,您在使用值初始化子字典时缺少 {} 括号。你对 out Dictionary 但不是在 inner 中所做的相同。

      Dictionary<string, Dictionary<string, string>> dict = new Dictionary<string, Dictionary<string, string>>() {
                      {"Key1", new Dictionary<string, string>() { { "SubKey1","Value1"} } },
                      {"Key2", new Dictionary<string, string>() { { "SubKey2","Value2"} } }
                  };
      

      按照此操作后,您的字典将如下所示

      Dictionary<string, Dictionary<string, string>> PredictiveTable =
                  new Dictionary<string, Dictionary<string, string>>(){
                      {"+", new Dictionary<string, string>() {{"E","error"}}},
                      {"*", new Dictionary<string, string>() {{"E","error" }}},
                      {"i", new Dictionary<string, string>() {{ "E","E->TK"}}},
                      {"(", new Dictionary<string, string>() {{"E","E->TK"}}},
                      {")", new Dictionary<string, string>() {{"E", "error"}}},
                      {"#", new Dictionary<string, string>() {{ "E", "error"}}}
      };
      

      【讨论】:

        【解决方案3】:
                Dictionary<string,  Dictionary<string, string>> PredictiveTable =
                        new Dictionary<string, Dictionary<string, string>>(){
                            {"+", new Dictionary<string, string>() {["E"] = "error"}},
                            {"*", new Dictionary<string, string>() {["E"] = "error"}},
                            {"i", new Dictionary<string, string>() {["E"] = "E->TK"}},
                            {"(", new Dictionary<string, string>() {["E"] = "E->TK"}},
                            {")", new Dictionary<string, string>() {["E"] = "error"}},
                            {"#", new Dictionary<string, string>() {["E"] = "error"}}
            };
        

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2020-04-18
          • 2019-10-11
          • 1970-01-01
          • 2015-03-07
          • 2011-03-01
          • 2010-09-24
          • 1970-01-01
          • 2017-06-07
          相关资源
          最近更新 更多