foreach循环未按预期值启动控制台输出
本文关键字:启动 控制台 输出 循环 foreach | 更新日期: 2023-09-27 17:58:55
当我用以下代码迭代列表时,我得到了一个列表集合的意外起始值:
var lister = new List<int>();
for (int i = 0; i <= 300; i++)
{
lister.Add(i);
}
foreach (var item in lister)
{
Console.WriteLine(item);
}
控制台的第一个输出是2
,而不是预期的0
。如果我对数组执行此操作,它会像预期的那样正常工作。换句话说,控制台的输出从0
开始。为什么上面的for
循环没有从0
开始向lister集合对象添加值,而是从数字2
开始添加值,并向上添加值?
当我使用以下代码对数组进行迭代时,不会出现此问题:
var myArray = new int[300];
for (int i = 0; i < 300; i++)
{
myArray[i] = i;
}
foreach (var item in myArray)
{
Console.WriteLine(item);
}
Selman22的答案是您所看到的正确原因——控制台默认有300行的缓冲区。最后300行之前的所有内容都会从控制台窗口中滚动并丢失。
你可以更改缓冲区,将其增加到你需要的任何大小:
Console.BufferHeight = 9999;
...
// now you'll be able to scroll up and see all your numbers
foreach (var item in lister)
{
Console.WriteLine(item);
}
实际上它正在显示0
,但您可以看到它,因为您的控制台大小不够大。尝试:
foreach (var item in lister)
{
Console.WriteLine(item);
if(item % 100 == 0) Console.Read();
}
然后按enter键查看下一个100数字。