C#Dictionary,这个简单代码中TryGetValue错误的来源是什么

时间:2017-10-12 20:18:55

标签: c#

        Dictionary<string, int> test = new Dictionary<string, int>();
        test.Add("dave", 12);
        test.Add("john", 14);

        int v;

        test.TryGetValue("dave", out int v)
        {

            Console.WriteLine(v);

        }

这个简单的C#代码给出了“最佳重载方法匹配有一些无效参数”错误。你能告诉我错误的来源吗?感谢。

4 个答案:

答案 0 :(得分:2)

OP在VS2012中,而不是使用C#7。

首先,摆脱参数列表中的int。它可以在您的C#版本中出现。

其次,在TryGetValue()调用后添加分号...

int v;
test.TryGetValue("dave", out v);
Console.WriteLine(v); 

或者将其放在if:

int v;
if (test.TryGetValue("dave", out v))
{ 
     Console.WriteLine(v); 
} 

答案 1 :(得分:0)

“value”是您已经声明的变量,还是您从intellisense中为TryGetValue留下了示例?很确定这是后一种情况。编辑:或者它是C#功能的新版本......这为v:

写出了12
            Dictionary<string, int> test = new Dictionary<string, int>();
                    test.Add("dave", 12);
                    test.Add("john", 14);

                    int v;
                    test.TryGetValue("dave", out v);
                {
                            Console.WriteLine(v);

                    }

答案 2 :(得分:0)

你有错误或误解了

TryGetValue()

您的writeline所在的代码块不需要。 只需结束您的代码行并执行writeLine。

test.TryGetValue("dave", out int value); // <---- notice the ;
Console.WriteLine(value);

编辑: 或者,正如尼梅洛先生所建议的那样,可能会有一个if语句缺失如此:

if test.TryGetValue("dave", out int value) 
{
  Console.WriteLine(value);
}

答案 3 :(得分:0)

你不要错过你的片段中的if,不是吗?

    Dictionary<string, int> test = new Dictionary<string, int>();
    test.Add("dave", 12);
    test.Add("john", 14);

    // missing if there?
    test.TryGetValue("dave", out int value)
    {

        Console.WriteLine(value);

    }

我的便宜2美分,有点重构...:

    var test = new Dictionary<string, int> {{"dave", 12}, {"john", 14}};

    if (test.TryGetValue("dave", out var value))
    {
        Console.WriteLine(value);
    }

    Console.ReadKey();