如何在C#中使用while循环遍历并打印列表?
用While循环遍历C# List的正确姿势
嗨,刚接触C#就主动尝试不同循环写法,这点特别棒!先帮你拆解下你写的代码里的问题,再给你两种靠谱的while遍历方案~
你的代码为什么会出错?
你写的这段代码有两个核心问题:
- 索引越界:你的List只有3个元素,C#里List的索引是从0开始的,合法索引范围是0、1、2,但你初始把
i设成了10,直接访问list[i]肯定会抛出IndexOutOfRangeException。 - 无限循环:循环条件
list.Count >= 0永远为真——List的元素个数不可能是负数,所以这个循环会一直跑下去,直到因为索引越界崩溃。
正确的正向遍历(从第一个元素到最后一个)
如果想按元素添加的顺序遍历,你可以这样写:
List<int> list = new List<int>(); list.Add(1); list.Add(2); list.Add(3); int i = 0; // 只要索引小于List的元素总数,就继续循环 while (i < list.Count) { Console.WriteLine(list[i]); i++; // 每次循环后索引+1,移动到下一个元素 }
正确的反向遍历(从最后一个元素到第一个)
看你原代码里是i = i - 1,应该是想从后往前遍历?那可以这样写:
List<int> list = new List<int>(); list.Add(1); list.Add(2); list.Add(3); int i = list.Count - 1; // 从最后一个元素的索引开始(Count是3,减1就是2) // 只要索引>=0,就继续循环 while (i >= 0) { Console.WriteLine(list[i]); i--; // 每次循环后索引-1,往前移动一个元素 }
核心要点
用while循环遍历List的关键就是手动管理索引变量:
- 初始索引要设到合法的起始位置(正向是0,反向是
list.Count-1) - 循环条件要保证索引始终在合法范围内(正向是
i < list.Count,反向是i >=0) - 每次循环必须更新索引(+1或-1),不然会陷入无限循环
虽然你知道for和foreach是更优的选择,但能搞懂while的实现逻辑,对理解循环的本质很有帮助哦~
内容的提问来源于stack exchange,提问作者TwistErase
相关产品推荐
相关产品推荐

