这是我目前的代码:
int max;
if(runOnce)
max = 1;
else
max = 2;
for(i=0;i<max;i++)
//do stuff
它看起来非常混乱,我确信有更好的方法可以做到这一点。
感谢。
答案 0 :(得分:2)
如果你想摆脱for
- 循环,一个简单的解决方案就是在方法中包含你的'do stuff'逻辑:
private void DoStuff()
{
// do stuff
}
然后当你想要打电话时,只需做这样的事情:
DoStuff();
if (!runOnce)
{
DoStuff();
}
或者,如果您需要访问多个局部变量,您可能需要考虑使用lambda expression而不是方法:
Action doStuff = () =>
{
// do stuff
};
doStuff();
if (!runOnce)
{
doStuff();
}
答案 1 :(得分:1)
试试这个:
int max = (runOnce==true) ? 1 : 2;
for(i=0; i<max; i++)
?
运算符称为条件运算符,它的一般形式如下:
condition ? first_expression : second_expression;
如果condition
为真,则使用first_expression
。否则使用second_expression
。
有关更多文档,请查看here。
最后但并非最不重要的是,斯里兰在评论中指出,我们也可以使用
int max = runOnce ? 1 : 2;
答案 2 :(得分:1)
这个怎么样:
for (int i = 0; i < (runOnce? 1 : 2); i++)
答案 3 :(得分:0)
有时有用的一件事是,布尔值true
在转换为整数时总是具有值1
。所以这应该有效:
for( int i = (int)runOnce; i < 2; ++i )
如果runOnce
为false,则计数(0,1),或者如果为真,则跳过0,仅在i = 1时运行。