如果形式不起作用,则简短

本文关键字:不起作用 如果 | 更新日期: 2023-09-27 18:27:20

(myCondition!="true")
    ? output("false"); doSomethingElse();
    : output("true")

为什么 IDE 在双点"预期分号"处显示?

如果形式不起作用,则简短

条件运算符不是"短 if 形式"...它是一个运算符,它根据第一个操作数的计算来计算第三个操作数或第二个操作数。整个表达式的结果是计算的任何操作数的结果(从第 2/3 个操作数中(,在必要时转换为结果类型(第 2 个和第 3 个操作数必须属于同一类型,或者必须将一个操作数隐式转换为另一个操作数(。

您不能将其用作单个语句,当然也不能将多个语句用作操作数。请注意,它必须计算为一个值 - 如果OutputDoSomethingElsevoid方法,这是无法使用条件运算符的另一个原因。

只是不要这样做。当您需要if语句的执行模型时,请使用if语句。

// I generally try to make conditions positive where possible. It's easier to read IMO.
if (myCondition == "true")
{
    Output("true");
}
else
{
    Output("false");
    DoSomethingElse();
}
这不是">

if"的一般替代品。相反,它通常用于在两个值之间进行选择;

 var clothing = isRaining ? hat : sunglasses;

你正在做的事情最好用经典的 if 来表达;

if (myCondition!="true") 
{
    output("false"); 
    doSomethingElse();
}
else
{
    output("true")
}

您遇到的实际问题是您在第一个分支中包含两个语句;

output("false"); doSomethingElse();

在这种形式中,您只能有一个语句,并且它必须返回一个值。在 output("false") the language is expecting the 之后 :' 表示其他值;你给它一个分号,它变得混乱了。