(Console.BufferHeight) Я не вижу / прокручиваю, чтобы увидеть все выходные данные консоли с Console.WriteLine

Когда я запускаю этот код, число в верхней части окна вывода равно 99701. Почему я не вижу все до 1? Я на самом деле вижу, как выводятся все числа, но в окне консоли я могу только прокручивать достаточно высоко, чтобы увидеть 99701 (наверное). Я использую Visual C# express на Vista Home.: 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 ответов

Решение

Начиная с.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.

300, кажется, ваш размер буфера консоли по умолчанию. Это настройка Windows, и она не связана с вашим приложением.

Вы можете изменить размер буфера консоли, создав ярлык для исполняемого файла. Затем щелкните правой кнопкой мыши по ярлыку и выберите "Свойства". Перейдите на вкладку "Параметры" и измените размер буфера.

Похоже, что я не проверял эту функцию в течение долгого времени, но теперь она может быть изменена. Смотрите ответ Альфреда Майерса

Это консоль, а не ваше приложение.

В качестве альтернативы вы можете использовать Debug.WriteLine (System.Diagnostics) и использовать окно вывода в Visual Studio. Он имеет гораздо больший буфер (просто обязательно запустите сборку Debug).

Это не имеет ничего общего с C#, но на самом деле выходной буфер в командной строке по умолчанию имеет длину всего 300 строк. Вы можете изменить это в настройках окна, хотя, возможно, это является возможностью попробовать реализовать функцию, похожую на "более", которая выходит из цикла каждый раз, когда выводится скрининг данных. Затем, когда вы нажимаете клавишу, она выводит другой экран и т. Д.

Вы больше не увидите, потому что консоль по умолчанию не буферизует более 300 строк. Используйте диалоговое окно настроек консоли, чтобы изменить это - я полагаю, что вы можете просто запустить командную строку и изменить их там, а затем запустить свою программу.

Альфред уже указал, как ваше приложение может изменять высоту буфера.

Другие вопросы по тегам