需要帮助来理解不同的 IF 语句
Need help on understanding different IF statements
为什么这不起作用?
dictionary.ContainsKey(input) ? int value = dictionary[input] : "Not Found";
为什么会出现以下情况?
if (dictionary.ContainsKey(input)) { int values = dictionary[input]; }
第一个代码块通常称为 "inline if",用于表达式,而不是代码块。
正如 Scott 在评论中提到的,在 c# 中它被称为 "conditional operator"。
你可以阅读它here。
正确的语法是:
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...
第一个语句是错误的,因为声明和初始化一个新的局部变量是一个语句,而不是一个*表达式。条件运算符的第二个和第三个操作数需要是表达式,而不是语句。
在您的第二个代码片段中,您有一个 if
后跟大括号。这些大括号需要包含 0 到 N 语句 ,而不是表达式。声明一个局部变量在那个上下文中是有效的,而不是第一个。当然,虽然它在第二种情况下在语法上有效,但您声明了一个永远无法读取的变量,这毫无意义,这将导致警告,因为它毫无意义。
为什么这不起作用?
dictionary.ContainsKey(input) ? int value = dictionary[input] : "Not Found";
为什么会出现以下情况?
if (dictionary.ContainsKey(input)) { int values = dictionary[input]; }
第一个代码块通常称为 "inline if",用于表达式,而不是代码块。
正如 Scott 在评论中提到的,在 c# 中它被称为 "conditional operator"。
你可以阅读它here。
正确的语法是:
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...
第一个语句是错误的,因为声明和初始化一个新的局部变量是一个语句,而不是一个*表达式。条件运算符的第二个和第三个操作数需要是表达式,而不是语句。
在您的第二个代码片段中,您有一个 if
后跟大括号。这些大括号需要包含 0 到 N 语句 ,而不是表达式。声明一个局部变量在那个上下文中是有效的,而不是第一个。当然,虽然它在第二种情况下在语法上有效,但您声明了一个永远无法读取的变量,这毫无意义,这将导致警告,因为它毫无意义。