Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/loops/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 如果是x,则运行一次,如果不是x,则运行两次_C#_Loops_Int_Logic - Fatal编程技术网

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

C# 如果是x,则运行一次,如果不是x,则运行两次,c#,loops,int,logic,C#,Loops,Int,Logic,这是我当前的代码: int max; if(runOnce) max = 1; else max = 2; for(i=0;i<max;i++) //do stuff intmax; 如果(跳动) max=1; 其他的 max=2; 对于(i=0;i试试这个: int max = (runOnce==true) ? 1 : 2; for(i=0; i<max; i++) 如果条件为真,则使用第一个表达式。否则使用第二个表达式 有关更多文档,请参阅 最后但

这是我当前的代码:

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

for(i=0;i<max;i++)
    //do stuff
intmax;
如果(跳动)
max=1;
其他的
max=2;
对于(i=0;i试试这个:

int max = (runOnce==true) ? 1 : 2;
for(i=0; i<max; i++)
如果
条件
为真,则使用
第一个表达式
。否则使用
第二个表达式

有关更多文档,请参阅

最后但并非最不重要的是,正如斯利拉姆在评论中指出的,我们也可以使用

int max = runOnce ? 1 : 2;
试试这个:

int max = (runOnce==true) ? 1 : 2;
for(i=0; i<max; i++)
如果
条件
为真,则使用
第一个表达式
。否则使用
第二个表达式

有关更多文档,请参阅

最后但并非最不重要的是,正如斯利拉姆在评论中指出的,我们也可以使用

int max = runOnce ? 1 : 2;

有时需要知道的一件事是,布尔值
true
,当转换为整数时,其值始终为
1
。因此,这应该是可行的:

for( int i = (int)runOnce; i < 2; ++i )
for(int i=(int)runOnce;i<2;++i)

如果
runOnce
为false,则计数(0,1),如果为true,则跳过0,仅在i=1时运行。

有时需要知道的一件事是,布尔值
true
在转换为整数时,始终具有
1
的值。因此,这应该是可行的:

for( int i = (int)runOnce; i < 2; ++i )
for(int i=(int)runOnce;i<2;++i)

如果
runOnce
为false,则计数(0,1),如果为true,则跳过0,仅在i=1时运行。

如果您希望摆脱
for
-循环,一个简单的解决方案是将“do stuff”逻辑封装在一个方法中:

private void DoStuff() 
{
    // do stuff
}
Action doStuff = () => 
{
    // do stuff
};

doStuff();
if (!runOnce) 
{
    doStuff();
}
然后,当你想打电话给它时,就这样做:

DoStuff();
if (!runOnce) 
{
    DoStuff();
}

可选地,如果需要访问多个局部变量,您可能需要考虑使用A代替方法:

private void DoStuff() 
{
    // do stuff
}
Action doStuff = () => 
{
    // do stuff
};

doStuff();
if (!runOnce) 
{
    doStuff();
}

如果您希望摆脱
for
-循环,一个简单的解决方案是将您的“do stuff”逻辑封装在一个方法中:

private void DoStuff() 
{
    // do stuff
}
Action doStuff = () => 
{
    // do stuff
};

doStuff();
if (!runOnce) 
{
    doStuff();
}
然后,当你想打电话给它时,就这样做:

DoStuff();
if (!runOnce) 
{
    DoStuff();
}

可选地,如果需要访问多个局部变量,您可能需要考虑使用A代替方法:

private void DoStuff() 
{
    // do stuff
}
Action doStuff = () => 
{
    // do stuff
};

doStuff();
if (!runOnce) 
{
    doStuff();
}
这个怎么样:

for(int i=0;i<(runOnce?1:2);i++)

这个怎么样:

for(int i=0;i<(runOnce?1:2);i++)

为什么看起来很乱?对我来说很好。你可以减少
int max=runance?1:2;
为什么看起来很乱?对我来说很好。你可以减少
int max=runance?1:2;
int max=runance?1:2
就足够了:)@SriramSakthivel当然可以。但我想让以前没有使用过它的用户更具可读性。我会更新我的帖子。谢谢大家!<代码>整数最大值=跳动?1:2已经足够了:)@SriramSakthivel当然可以。但我想让以前没有使用过它的用户更具可读性。我会更新我的帖子。非常感谢。是的,在我看来这是最好的方法。如果只运行一次,您就可以摆脱神奇的数字和整个
for
循环。就我个人而言,我也会改变
!runOnce
运行两次
以避免出现负面情况,但这只是我的想法,在我看来,这是最好的方法。如果只运行一次,您就可以摆脱神奇的数字和整个
for
循环。就我个人而言,我也会改变
!runOnce
运行两次
以避免出现负面情况,但这只是我的问题。编译的东西如何。@pierre lucpinoult它编译得很好。尝试用C++编译器。但是,我没有将三元运算符括在括号内。。更正了,现在好多了。在发布代码之前,一定要先尝试一下。顺便说一下,这是C,而不是C++。编译的东西怎么样?@彼埃尔LuppiNoUT编译好。尝试用C++编译器。但是,我没有将三元运算符括在括号内。。更正了,现在好多了。在发布代码之前,一定要先尝试一下。顺便说一下,这是C,不是C++。