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