C# 如果表单不起作用,则缩短

C# 如果表单不起作用,则缩短,c#,if-statement,short,C#,If Statement,Short,为什么IDE在双点处说“预期分号”?条件运算符不是“短if形式”。。。它是一个运算符,根据第一个操作数的计算结果计算第三个操作数或第二个操作数。整个表达式的结果是计算的任何操作数的结果(第二个/第三个操作数中的一个),必要时转换为结果类型(第二个和第三个操作数必须是相同的类型,或者必须有一个到另一个的隐式转换) 不能将其用作单个语句,也不能将多个语句用作操作数。请注意,它必须计算为一个值-如果Output和DoSomethingElse是void方法,这就是无法使用条件运算符的另一个原因 不要这

为什么IDE在双点处说“预期分号”?

条件运算符不是“短if形式”。。。它是一个运算符,根据第一个操作数的计算结果计算第三个操作数或第二个操作数。整个表达式的结果是计算的任何操作数的结果(第二个/第三个操作数中的一个),必要时转换为结果类型(第二个和第三个操作数必须是相同的类型,或者必须有一个到另一个的隐式转换)

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

不要这样做。如果需要
if
语句的执行模型,请使用
if
语句

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

这并不是用来代替“如果”。相反,它通常用于在两个值之间进行选择

// I generally try to make conditions positive where possible. It's easier to read IMO.
if (myCondition == "true")
{
    Output("true");
}
else
{
    Output("false");
    DoSomethingElse();
}
你所做的是更好地表达了一个经典的如果

 var clothing = isRaining ? hat : sunglasses;
您遇到的实际问题是在第一个分支中包含了两个语句

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

在这种形式下,只能有一条语句,它必须返回一个值。在
输出(“false”)之后,语言期望else值为
:`;你给它一个分号,它被搞糊涂了。

它应该是(myCondition!=“true”)?输出(“false”):输出(“true”)您真的希望我们修复您的伪代码吗<代码>“true”是
字符串
,是
myCondition
还是
字符串
bool
?为什么要使用条件运算符?使用
if…else
省去分号会导致错误。这是合乎逻辑的,因为编译器无法判断第一个表达式的位置ends@Tim施梅尔特:是的,为什么不呢?我试着去理解为什么它不起作用。@Best_Where_给出:我认为你不是判断你的问题有多清楚的最佳人选,因为它会引起混乱。如果你想问为什么代码不能编译,不要给出你原本不希望编译的代码!我们如何知道问题的哪些部分您不愿意提供真正的代码,问题的哪一部分你不理解语言?谢谢你的详细回答也许值得注意的是,第一个和第二个表达式的类型必须相同,或者必须存在从一种类型到另一种类型的隐式转换。运算符的全部目的是分配一个值,而不是基于某些条件改变控制流,例如使用
if…else
@TimSchmelter:Yup,添加了一点。
output("false"); doSomethingElse();