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

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

Ответ 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.

Ответ 2

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

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

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

Ответ 3

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

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

Ответ 4

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

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

Ответ 5

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