C# 是否有一种标准的方法来编写不需要update语句的for循环?

C# 是否有一种标准的方法来编写不需要update语句的for循环?,c#,loops,for-loop,C#,Loops,For Loop,众所周知,大多数for循环采用以下形式: for (int i = 0; i < whatever; i++) { //do stuff } 我正在编写一个方法,因为我正在嵌套在这个循环中的一个循环中更新,所以不适合像上面的格式那样包含I++。所以现在,我有这个: List<Item> itemList = new List<Item>(); PopulateListOfItems(itemList); List<List<Item>&

众所周知,大多数for循环采用以下形式:

for (int i = 0; i < whatever; i++)
{
    //do stuff
}
我正在编写一个方法,因为我正在嵌套在这个循环中的一个循环中更新,所以不适合像上面的格式那样包含I++。所以现在,我有这个:

List<Item> itemList = new List<Item>();
PopulateListOfItems(itemList);

List<List<Item>> itemSubListList = new List<List<Item>>();

for (int i = 0; i < itemList.Count; //i doesn't need updating here)
{
    List<Item> subList = new List<Item>();

    for (int j = 0; j < subListSize && i < itemList.Count; j++)
    {   
        subList.Add(itemList[i++]);
    }

    itemSubListList.Add(subList;
}
有没有一种标准的方法来编写这样一个循环,可能包括某种伪代码,i++通常会在其中明确表示不需要更新?也许像

for (int i = 0; i < whatever; true)
{
    //do stuff
}
。。。或者,我刚刚在漫长的一周结束时,我的大脑太兴奋了,以至于没有意识到我真的应该使用while循环什么的

顺便说一句,我是用C写的,是的,但这可以应用于多种语言。

省略它:

for (int i = 0; i < whatever; )
{
    //do stuff
}
当然,正如其他答案所建议的那样,您也可以通过一个while循环来实现这一点。这两种解决方案都是完全有效的,你选择哪一种主要取决于风格。一般来说,您应该选择最能清楚地向读者传达代码意图的解决方案。

忽略它:

for (int i = 0; i < whatever; )
{
    //do stuff
}
当然,正如其他答案所建议的那样,您也可以通过一个while循环来实现这一点。这两种解决方案都是完全有效的,你选择哪一种主要取决于风格。一般来说,您应该选择最能清楚地向读者传达代码意图的解决方案。

只需使用while循环而不是for循环

只需使用while循环而不是for循环


for循环构造只是while循环的语法糖,所有for循环都分解为while循环

for(int i = 0; i < whatever; i++)
{
    //do stuff
}
最终意味着:

{
    int i = 0;
    while(i < whatever)
    {
        //do stuff
        i++;
    }
}
注意整数范围的附加大括号


您省略的for循环的任何部分也将从分解的while循环中省略,因此您必须手动处理它们。如果你不使用这三个部分,你真的可以只写一个while循环,特别是如果你省略的部分之一是变量初始值设定项,因为我提到了变量作用域。

for循环构造只是一个while循环的语法糖,所有for循环分解成while循环

for(int i = 0; i < whatever; i++)
{
    //do stuff
}
最终意味着:

{
    int i = 0;
    while(i < whatever)
    {
        //do stuff
        i++;
    }
}
注意整数范围的附加大括号


您省略的for循环的任何部分也将从分解的while循环中省略,因此您必须手动处理它们。如果你不使用这三个部分,你真的可以只写一个while循环,特别是如果你省略的部分之一是变量初始值设定项,因为我提到了变量范围。

你可以省略它,但是你只写了一个while循环。你可以省略它,但是你刚刚写了一个while循环,它可能不是一个无限循环,这取决于//do stuff的功能。它可能包含退出循环的break语句。@ICEMANND CORPORT。这是无限的,虽然是真的//做事。你为什么要这样做?很容易忽略的是,它不是for循环的标准,也不再具有for循环的语义。变量作用域有点紧似乎也没有什么好的理由。@DanielBrückner Any for循环可以重写为while循环,反之亦然。嗯,for循环和while循环的区别不仅仅在于语法,还在于它的通信意图。for循环表达了非常有规律地迭代某个过程的思想,一次迭代一小步,在这个过程中有一个众所周知的停止点。另一方面,while循环表示您将继续此过程,直到满足一个条件,但语义要宽松得多。换句话说,我认为这取决于做什么。但正如我所说的,这两种方法都是有效的。它可能不是一个无限循环,这取决于//do stuff的作用。它可能包含退出循环的break语句。@ICEMANND CORPORT。这是无限的,虽然是真的//做事。你为什么要这样做?很容易忽略的是,它不是for循环的标准,也不再具有for循环的语义。变量作用域有点紧似乎也没有什么好的理由。@DanielBrückner Any for循环可以重写为while循环,反之亦然。嗯,for循环和while循环的区别不仅仅在于语法,还在于它的通信意图。for循环表达了非常有规律地迭代某个过程的思想,一次迭代一小步,在这个过程中有一个众所周知的停止点。另一方面,while循环表示您将继续此过程,直到满足一个条件,但语义要宽松得多。换句话说,我认为这取决于做什么。但正如我所说,两者都是有效的。