【问题标题】:Ternary operator with index++ gives "Only assignment, call, increment, decrement, await and new object expressions can be used as statement"带有 index++ 的三元运算符给出“只有赋值、调用、递增、递减、等待和新对象表达式可以用作语句”
【发布时间】:2019-11-18 04:16:19
【问题描述】:

我没有得到这个提示文本以及代码无法编译的原因:

int index = 0;
bool result = false;

result ? index++ : index--;

这不是递增/递减吗?

为什么会报编译错误:“只有赋值、调用、递增、递减、等待和new对象表达式可以作为语句使用”?

【问题讨论】:

  • 答案告诉你如何正确使用它,但这实际上只是一种复杂的方式来执行 if 语句 - 我可能会使用简单的代码而不是使用三元运算符。
  • 编译器抱怨的是三元运算符,而不是增量。就个人而言,在这种情况下,我会使用if/elseif(result) index++; else index--;
  • 分配表达式 ("int tmp = result ? index++ : index--;") 将消除错误,但正如其他人使用 if 语句或 Sami 的回答所评论的那样下面会更好。
  • @jPhizzle:您尝试过您的解决方案吗?我在 SO 上看到了几个问题,询问为什么与此类似的代码不起作用。

标签: c# increment ternary-operator


【解决方案1】:

三元运算符本身并不是一个语句。里面有什么并不重要,重要的是它本身。这将是一个声明:

index += result ? 1 : -1;

【讨论】:

  • 我明白了。谢谢!
猜你喜欢
  • 2015-07-05
  • 2018-06-03
  • 2016-06-27
  • 1970-01-01
  • 2023-03-05
  • 2020-11-24
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多