【发布时间】:2019-11-18 04:16:19
【问题描述】:
我没有得到这个提示文本以及代码无法编译的原因:
int index = 0;
bool result = false;
result ? index++ : index--;
这不是递增/递减吗?
为什么会报编译错误:“只有赋值、调用、递增、递减、等待和new对象表达式可以作为语句使用”?
【问题讨论】:
-
答案告诉你如何正确使用它,但这实际上只是一种复杂的方式来执行
if语句 - 我可能会使用简单的代码而不是使用三元运算符。 -
编译器抱怨的是三元运算符,而不是增量。就个人而言,在这种情况下,我会使用
if/else:if(result) index++; else index--; -
分配表达式 ("int tmp = result ? index++ : index--;") 将消除错误,但正如其他人使用 if 语句或 Sami 的回答所评论的那样下面会更好。
-
@jPhizzle:您尝试过您的解决方案吗?我在 SO 上看到了几个问题,询问为什么与此类似的代码不起作用。
标签: c# increment ternary-operator