Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/loops/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# foreach循环未以预期值启动控制台输出_C#_Loops_For Loop_Foreach - Fatal编程技术网

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我已经用这个代码更新了我原来的问题。