(Console.BufferHeight)我无法看到/滚动以查看Console.WriteLine的所有控制台输出

时间:2009-09-02 21:14:26

标签: c# .net console.writeline

当我运行此代码时,输​​出窗口顶部的数字是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”)没有。我猜我只能向上滚动这么多新行?

5 个答案:

答案 0 :(得分: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.

答案 1 :(得分:11)

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

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

似乎我没有在很长一段时间内检查该功能,但它现在似乎可以修改。见Alfred Myers answer

答案 2 :(得分:3)

控制台不是你的应用程序。

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

答案 3 :(得分:2)

您不会再看到它了,因为默认情况下控制台不会缓冲超过300行。使用控制台的设置对话框来更改此设置 - 我相信您只需启动命令提示符并在那里更改它们,然后运行您的程序。

Alfred已经指出了你的应用程序如何改变缓冲区高度。

答案 4 :(得分:2)

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