三元运算符in-for-statement

时间:2015-01-13 20:00:10

标签: javascript c#

我试图在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语句中实现三元运算符?

3 个答案:

答案 0 :(得分:1)

在C#a for语句中需要一个init语句,一个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); 
    }
}

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

答案 1 :(得分:1)

条件表达式0 <= _ref ? _j++ : _j--不是有效语句。您可以通过多种方式发表声明,但因为它不完整。如您收到的错误消息所示,您需要将语句作为await,方法调用,递增/递减或新对象表达式,以使其成为有效的表达式语句。条件运算符不在该列表上。

当然,不是在对该表达式添加一个完全多余的方法调用,而是真正的解决方法是首先不要像这样使用条件运算符,而不是添加更多不可读的代码来使其编译。 / p>

答案 2 :(得分:0)

三元运算符需要两个表达式,所以这不会起作用。你能做的是:

_j += (0 <= _ref ? 1 : -1);
但是,这看起来比可怕的更糟糕。