在C#for循环中的操作之前的步骤n

śmi*_*gli -4 c# vb.net loops

我使用的标准"for"循环是这样的:

for (int i = 0; i < x; i++)
Run Code Online (Sandbox Code Playgroud)

i每次通过循环后,每次递增1.我想知道Step n在C#的"for"循环中是否有类似VB的操作.我用Google搜索并发现我唯一能做的就是(假设n=2)

for (int i = 0; i < x; i += 2)
Run Code Online (Sandbox Code Playgroud)

这很公平.但这让我想到了下一个问题.如果我想更改一个i在进入之前递增的循环,例如:

for (int i = 0; i < x; ++i)
Run Code Online (Sandbox Code Playgroud)

有没有任何优雅的方法来做,或者我是否需要进入第一个循环已经i增加并在每个循环结束时增加它或在第一个之后开始所有循环或做其他疯狂的东西之前?

i += 2
for (int i = 0; i < x; i++)
{ i++; }
Run Code Online (Sandbox Code Playgroud)

要么

i += 2
for (int i = 0; i < x; i += 2)
Run Code Online (Sandbox Code Playgroud)

要么

for (int i = 0 - 2; i < x - 2; i += 2)
Run Code Online (Sandbox Code Playgroud)

我假设在循环可能无法在所有情况下进行递增,因此我认为应该有其他方法来做到这一点.

D S*_*ley 10

我想知道是否有类似VB的东西 Step n

你有正确的C#等价物:

for (int i = 0; i < x; i += 2)
Run Code Online (Sandbox Code Playgroud)

如果我想更改一个i在进入之前递增的循环,该怎么办?

我可能会遗漏一些东西,但听起来你只是想改变你的起始值:

for (int i = 1; i < x; i++)
Run Code Online (Sandbox Code Playgroud)

另请注意:

  • 在这里使用++ii++没有真正的区别,因为你没有在声明中使用返回值任何事情for,这是使用++i和之间的唯一区别i++
  • 你不能做以下事情:

    i += 2;
    for (int i = 0; i < x; i += 2)
    
    Run Code Online (Sandbox Code Playgroud)

    因为你不能重新声明它i作为for循环的一部分;如果它已经在循环之外声明了.

编辑

for循环for (initializer; condition; iterator)在功能上等同于:

{
    initializer;
    while(condition)
    {
        .. do something
        iterator;
    }
}
Run Code Online (Sandbox Code Playgroud)

听起来你想要某种类似于以下的for循环:

{
    initializer;
    while(condition)
    {
        iterator;
        .. do something
    }
}
Run Code Online (Sandbox Code Playgroud)

在C#中没有这样的单语句构造.如果您想要这一系列事件,则必须使用while如上所述的循环或更改for循环中的语句以提供等效功能.