11

当我运行这段代码时,输​​出窗口顶部的数字是 99701。为什么我不能一直看到 1?我实际上看到所有的数字都被输出了,但是在控制台窗口上,我只能滚动到足够高的地方才能看到 99701(我猜)。我在 Vista Home 上使用 Visual C# express。:D

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Text.RegularExpressions;
using utilities;

namespace Testing_Project {
    class Program {
        static void Main(string[] args) {
            List<string> myList = new List<string>();

            for (int x = 0; x < 100000; x++)
               myList.Add( x.ToString() );
            foreach (string s in myList) {
                Console.WriteLine(s);
            }

            Console.Read();
        }
    }
}

Console.Write(s) 可以,但 Console.Write(s+"\n") 不行。我猜我只能向上滚动这么多换行符?

4

5 回答 5

26

从 .Net Framework 2.0 及更高版本开始,您可以使用Console.BufferHeight从您自己的程序中更改缓冲区高度:


Console.BufferHeight = Int16.MaxValue - 1; // ***** Alters the BufferHeight *****
List<string> myList = new List<string>();
for (int x = 0; x < 100000; x++) 
    myList.Add(x.ToString()); 
foreach (string s in myList) { 
    Console.WriteLine(s); 
}

最大高度为 Int16.MaxValue - 1。

于 2009-09-02T21:56:40.250 回答
11

300 似乎是您的默认控制台缓冲区大小。这是 Windows 设置,与您的应用程序无关。

您可以通过创建可执行文件的快捷方式来更改控制台缓冲区大小。然后右键单击快捷方式并选择属性。进入选项选项卡并更改缓冲区大小。

好像很久没检查那个功能了,不过现在好像可以修改了。见阿尔弗雷德迈尔斯的回答

于 2009-09-02T21:16:47.117 回答
3

它是控制台而不是您的应用程序。

作为替代方案,您可以使用 Debug.WriteLine (System.Diagnostics) 并使用 Visual Studio 中的“输出”窗口。它有一个更大的缓冲区(只要确保运行 Debug 构建)。

于 2009-09-02T21:36:22.070 回答
2

你不会再看到这些了,因为默认情况下控制台不会缓冲超过 300 行。使用控制台的设置对话框来改变它——我相信你可以启动一个命令提示符并在那里改变它们,然后运行你的程序。

Alfred 已经指出您的应用程序如何更改缓冲区高度。

于 2009-09-02T21:17:41.793 回答
2

这与C#无关,但实际上命令提示符中的输出缓冲区默认只有300行长。您可以在窗口设置中更改它,尽管也许这是一个尝试实现“更多”类似功能的机会,每次输出一屏数据时都会中断循环。然后当你按下一个键时,它会输出另一个屏幕,等等。

于 2009-09-02T21:18:44.460 回答