C# 我可以在for循环中为增量添加一个特定的条件语句吗?

C# 我可以在for循环中为增量添加一个特定的条件语句吗?,c#,C#,例如: for (int i = 0; i < 9; i++ && (a specific condition to the incremented variable)) var n = 0; for (int i = 0; i < 9; i += (n++%2==0) ? 1 : 0) { Console.WriteLine(i); } for(int i=0;i

例如:

for (int i = 0; i < 9; i++ && (a specific condition to the incremented variable))
var n = 0;
for (int i = 0; i < 9; i += (n++%2==0) ? 1 : 0) {
    Console.WriteLine(i);
}
for(int i=0;i<9;i++&&(递增变量的特定条件))
这将用于在伪无限中暂停循环,直到达到所述条件


这一点是让循环继续执行它的操作,同时停止i变量的增量,直到满足条件为止。例如,如果(‘另一个变量’<9),那么我可以得到它的正常增量。在另一种情况下,如果不满足条件,i将不会递增,但循环仍将逐个执行指令。

我认为
而在这种情况下,
将更有帮助:

int i = 0;
while (i < 9)
{
    if (condition)
        i++;
}
inti=0;
而(i<9)
{
如果(条件)
i++;
}
您可以实现

for (int i = 0; i < 9; i++ && (a specific condition to the incremented variable))
for(int i=0;i<9;i++&&(递增变量的特定条件))
作为

for(int i=0;i<9;i=(递增变量的特定条件)?i+1:i)
但这违背了for循环的一般目的和意图。这只会让您的测试人员、评审人员和其他程序员感到困惑


同样重要的是,它会让CLR优化器放弃,并通过每次添加范围检查来减慢myArray[i]

我想你看到的是这样的:

var counter = 0;
var otherCondition = 15;

while (counter < 9)
{
    if (otherCondition < 9)
    {
        counter++;
    }
    // Do other stuff
}
var计数器=0;
var otherCondition=15;
while(计数器<9)
{
如果(其他条件<9)
{
计数器++;
}
//做其他事情
}

您将在
0
处启动
计数器,就像在
for
循环中一样,并在到达
9
时终止。但只有在满足其他条件时才会增加。

我认为合适的控制结构流是嵌套循环,内部循环“暂停”到无穷大

for (int i = 0; i < 9; i++ )
{
    do
    {
        Foo();
    } while (!condition)
}
for(int i=0;i<9;i++)
{
做
{
Foo();
}而(!条件)
}
关于
i+=(真/假)呢?1:0

for (int i = 0; i < 9; i += (a specific condition to the incremented variable) ? 1 : 0)

var-met=0;
while(met<9)
{
if(递增变量的特定条件)满足++;
}

具体条件是什么?您可以将其放在条件部分
i<9&&somecondition
为什么不使用while循环并实现自己的增量,而不是弗兰肯斯坦循环呢logic@Minixav55是的,这将是最具可读性的,并且不会引起代码审阅者的愤怒。这样做当然是可能的,但这不是一个好主意。“for”循环应该非常简单且易于理解。请记住,
for
循环的全部目的是“initialize/test/increment”模式非常常见,它应该有自己非常清晰的语法。不要滥用这种语法,用锤子敲它,强迫它做其他事情。如果循环迭代有复杂的要求,请在
while
循环中明确说明。@HenkHolterman前面的答案是针对编辑前的问题。这不是重点。我只是想澄清一下我写的东西。
var n = 0;
for (int i = 0; i < 9; i += (n++%2==0) ? 1 : 0) {
    Console.WriteLine(i);
}
int met = 0;
while(true) 
{
  if(a specific condition to the incremented variable) met++;
  if(met >= 9) break;
}
var met = 0;
while( met < 9 ) 
{
  if(a specific condition to the incremented variable) met++;
}