Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/296.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/.net/21.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 需要帮助理解不同的IF语句吗_C#_.net_If Statement - Fatal编程技术网

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

C# 需要帮助理解不同的IF语句吗,c#,.net,if-statement,C#,.net,If Statement,为什么这样不行 dictionary.ContainsKey(input) ? int value = dictionary[input] : "Not Found"; 为什么会这样 if (dictionary.ContainsKey(input)) { int values = dictionary[input]; } 第一个代码块通常被称为“内联if”,用于表达式,而不是代码块 正如Scott在评论中提到的,在中,它被称为“条件运算符” 您可以阅读它。正确的语法应该是: int val

为什么这样不行

dictionary.ContainsKey(input) ? int value = dictionary[input] : "Not Found";
为什么会这样

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

第一个代码块通常被称为“内联if”,用于表达式,而不是代码块

正如Scott在评论中提到的,在中,它被称为“条件运算符”


您可以阅读它。

正确的语法应该是:

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个语句,而不是表达式。声明局部变量仅在该上下文中有效,而不是在第一个上下文中有效。当然,在第二种情况下,虽然它在语法上是有效的,但您声明的变量永远无法读取,这将导致一个警告,因为它毫无意义。

这是C#的吗?你能标记你的编程语言吗?是的,这是我在SOF中的第一个问题。我刚刚将condition=True,并对其进行了一些更正,但我认为问题在于第一个和第二个表达式的数据类型冲突。只是为了学究,如果它是“”类型的条件表达式,则不称为“内联”,因为“int”和“string”之间没有隐式转换,因此无法确定它的类型!!这是一个错误。这个答案没有回答被问到的实际问题,这就是为什么他会得到这个错误。@Servy最初的问题是“为什么这个不起作用”,在这个问题中,OP试图在应该是字符串表达式的内容内设置一个int值。所以是的,这确实回答了问题。@Crono告诉他操作员的名字并不能解释为什么它不起作用。它只是告诉他接线员的名字。谢谢你,我对第一个没意见,我知道有答案。我只是想在条件运算符中挑战我自己。@Bouzid:在你的问题的正下方(但在第一条评论之前)有一些链接(共享、编辑、关闭、删除等)。只需选择所需的一个。