语句中的三元运算符

本文关键字:三元 运算符 语句 | 更新日期: 2023-09-27 18:37:20

我正在尝试在for语句的最后一部分使用三元运算符来增加或减少我的索引。但这似乎不是C Sharp的正确陈述?我正在尝试从Javascript中移动一些代码,这就是我尝试这样做的原因。

  for (int _j = 0, _ref = (int) Math.Floor((double)array.Count / 2);
       0 <= _ref ? _j < _ref : _j > _ref; 
       0 <= _ref ? _j++ : _j--)
  { 
      _results1.Add(_j); 
  }

关于如何在 C# 中的 for 语句中实现三元运算符的任何想法?

语句中的三元运算符

在 C# 中,a for 语句需要一个 init-statement、一个 bool experssion、一个增量语句

您可以将其拆分为两种情况:

_ref = (int) Math.Floor((double)array.Count / 2); // assuming this can go negative...
if(0 <= _ref)
{
    for (int _j = 0; _j < _ref; _j++)
    { 
        _results1.Add(_j); 
    }
}
else
{
    for (int _j = 0; _j > _ref; _j--)
    { 
        _results1.Add(_j); 
    }
}

如果您喜欢它更短,您可以删除所有大括号...

条件表达式 0 <= _ref ? _j++ : _j-- 不是有效的语句。 你可以用任何方式从中做出陈述,但它是不完整的。 正如您收到的错误消息所示,您需要该语句是await、方法调用、递增/递减或新对象表达式,才能成为有效的表达式语句。 条件运算符不在该列表中。

当然,与其向该表达式添加完全多余的方法调用,真正的解决方法是首先不使用这样的条件运算符,而不是添加更多不可读的代码来编译它。

三元运算符需要两个表达式,因此这不起作用。您可以做的是:

_j += (0 <= _ref ? 1 : -1);

不过,这看起来比糟糕更糟糕。