C# foreach循环未以预期值启动控制台输出
当我使用以下代码遍历列表时,列表集合得到了一个意外的起始值:C# foreach循环未以预期值启动控制台输出,c#,loops,for-loop,foreach,C#,Loops,For Loop,Foreach,当我使用以下代码遍历列表时,列表集合得到了一个意外的起始值: var lister = new List<int>(); for (int i = 0; i <= 300; i++) { lister.Add(i); } foreach (var item in lister) { Console.WriteLine(item); } var myArray = new int[300]; for (int i = 0; i < 300; i++)
var lister = new List<int>();
for (int i = 0; i <= 300; i++)
{
lister.Add(i);
}
foreach (var item in lister)
{
Console.WriteLine(item);
}
var myArray = new int[300];
for (int i = 0; i < 300; i++)
{
myArray[i] = i;
}
foreach (var item in myArray)
{
Console.WriteLine(item);
}
实际上,它正在显示
0
,但您可以看到它,因为您的控制台大小不够大。请尝试:
foreach (var item in lister)
{
Console.WriteLine(item);
if(item % 100 == 0) Console.Read();
}
然后按enter键查看接下来的100个数字。实际上它显示的是
0
,但您可以看到它,因为您的控制台大小不够大。请尝试:
foreach (var item in lister)
{
Console.WriteLine(item);
if(item % 100 == 0) Console.Read();
}
然后按enter键查看接下来的100个数字。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);
}
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);
}
事实上,我能够在输出屏幕中滚动到列表的顶部,果然它是从2开始的,而不是预期的0。是的,这是个打字错误,我把它修好了。谢谢。我知道,但这不是我的意思,0和1显示,然后它们消失,例如。你可以将300更改为1000,你会看到它将从700或701702开始。你是对的,但即使在最大化控制台窗口后,我仍然看不到0和1。我将最大值从300更改为30,它从0和1显示,而无需最大化控制台窗口。我如何解决这个问题?谢谢。事实上,我可以在输出屏幕中滚动到列表的顶部,并且确信它是从2开始的,而不是像预期的那样从0开始的。是的,这是个打字错误,我把它修好了。谢谢。我知道,但这不是我的意思,0和1显示,然后它们消失,例如。你可以将300更改为1000,你会看到它将从700或701702开始。你是对的,但即使在最大化控制台窗口后,我仍然看不到0和1。我将最大值从300更改为30,它从0和1显示,而无需最大化控制台窗口。我如何解决这个问题?谢谢。那是个打字错误。列表应该是列表器。我修正了帖子中的错误。谢谢这件事我还不清楚。我不知道为什么会这样。那是个打字错误。列表应该是列表器。我修正了帖子中的错误。谢谢这件事我还不清楚。我不知道为什么会发生这种情况。您可以右键单击控制台的标题栏,单击布局选项卡,然后更改高度字段的值,而不是将其硬编码到源代码中。同样感谢您的解决方案。@Grantwiney的确,我一直在使用
控制台。阅读以限制控制台中显示的结果,我不经常使用控制台,所以不管怎样,这很好,每天我们都会学到一些新的东西:)我在迭代数组时没有值被截断的问题。为什么列表对象会出现此问题?@Grantwiney我已使用该代码更新了我的原始问题。您可以通过右键单击控制台标题栏,单击布局选项卡,然后更改高度字段的值来更改控制台的缓冲区高度,而不是将其硬编码到源代码中。同样感谢您的解决方案。@Grantwiney的确,我一直在使用控制台。阅读以限制控制台中显示的结果,我不经常使用控制台,所以不管怎样,这很好,每天我们都会学到一些新的东西:)我在迭代数组时没有值被截断的问题。为什么列表对象会出现这个问题?@grantwiney我已经用这个代码更新了我原来的问题。