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#代码给出了“最佳重载方法匹配有一些无效参数”错误。你能告诉我错误的来源吗?感谢。
答案 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();