我试图在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语句中实现三元运算符?
答案 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);
但是,这看起来比可怕的更糟糕。