如果是x则运行一次,如果不是x则运行两次

时间:2014-04-13 20:04:12

标签: c# loops int logic

这是我目前的代码:

int max;
if(runOnce)
    max = 1;
else
    max = 2;

for(i=0;i<max;i++)
    //do stuff

它看起来非常混乱,我确信有更好的方法可以做到这一点。

感谢。

4 个答案:

答案 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时运行。