【问题标题】:(Console.BufferHeight) I can't see/scroll to see all the console output with Console.WriteLine(Console.BufferHeight)我看不到/滚动查看所有控制台输出与 Console.WriteLine
【发布时间】:2009-09-02 21:14:25
【问题描述】:

当我运行这段代码时,输​​出窗口顶部的数字是 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") 不行。我猜我只能向上滚动浏览这么多换行符?

【问题讨论】:

  • +1 回答你的问题,因为很多人都弄错了 ;)

标签: c# .net console.writeline


【解决方案1】:

从 .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。

【讨论】:

  • 嗯,确实可以?很高兴知道。尽管如此,仍然不足以容纳 100000 件物品。 :)
  • 这让我找到了 67235,但更重要的是它解释了问题:D
  • 有点混淆 BufferHeight 和 BufferWidth 是 Int32 但只接受 Int16 值。 ://
【解决方案2】:

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

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

好像很久没检查那个功能了,不过现在好像可以修改了。见Alfred Myers answer

【讨论】:

  • 可以通过Console.BufferHeight改到Int16.MaxValue - 1
【解决方案3】:

这是控制台而不是您的应用。

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

【讨论】:

  • 您可以更改控制台的设置。它可以通过 Console.BufferHeight 更改为 Int16.MaxValue - 1
【解决方案4】:

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

【讨论】:

  • 可以通过Console.BufferHeight改到Int16.MaxValue - 1
【解决方案5】:

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

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

【讨论】:

  • 是的。它可以通过 Console.BufferHeight 更改为 Int16.MaxValue - 1
猜你喜欢
  • 1970-01-01
  • 2021-03-27
  • 1970-01-01
  • 2013-10-28
  • 2012-06-11
  • 1970-01-01
  • 2020-06-27
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多