需要帮助理解不同的IF语句

时间:2015-01-30 14:39:02

标签: c# .net if-statement

为什么这不起作用?

dictionary.ContainsKey(input) ? int value = dictionary[input] : "Not Found";

以下是为什么?

if (dictionary.ContainsKey(input)) { int values = dictionary[input]; }

3 个答案:

答案 0 :(得分:1)

第一个代码块通常被称为"内联如果"并且意味着与表达式一起使用,而不是代码块。

正如斯科特在评论中提到的那样,在中,它被称为"条件运算符"。

您可以阅读here

答案 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 语句,而不是表达式。声明局部变量在该上下文中是有效的,而不是第一个。当然,除了在第二种情况下在语法上有效之外,它没有任何价值,你要声明一个永远无法读取的变量,这将导致警告,因为它是毫无意义的。