为什么这不起作用?
dictionary.ContainsKey(input) ? int value = dictionary[input] : "Not Found";
以下是为什么?
if (dictionary.ContainsKey(input)) { int values = dictionary[input]; }
答案 0 :(得分:1)
答案 1 :(得分:1)
正确的语法是:
int value = dictionary.ContainsKey(input) ? dictionary[input] : int.MaxValue;
但我认为这会更好地匹配:
int value;
if(!dictionary.TryGetValue(input, out value))
{
_Log.Message("Not found");
return;
}
// Further process value...
答案 2 :(得分:0)
第一个语句是错误的,因为声明和初始化新的局部变量是语句,而不是*表达式。条件运算符的第二个和第三个操作数需要是表达式,而不是语句。
在您的第二个代码段中,您有if
后跟大括号。这些大括号需要包含0到N 语句,而不是表达式。声明局部变量在该上下文中是有效的,而不是第一个。当然,除了在第二种情况下在语法上有效之外,它没有任何价值,你要声明一个永远无法读取的变量,这将导致警告,因为它是毫无意义的。