2009-09-02 16 views
10

Cuando ejecuto este código, el número en la parte superior de la ventana de salida es 99701. ¿Por qué no llego? ver todo el camino a través de 1? De hecho veo todos los números saliendo, pero en la ventana de la consola, solo puedo desplazarme lo suficiente para ver 99701 (supongo). Estoy usando Visual C# express en Vista Home. : D(Console.BufferHeight) No puedo ver/desplazarme para ver toda la salida de la consola con Console.WriteLine

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) lo hace muy bien, pero Console.Write (s + "\ n") no lo hace. ¿Supongo que solo puedo desplazarme hacia arriba a través de tantas líneas nuevas?

+0

1 para su pregunta, porque mucha gente lo entendió mal;) –

Respuesta

25

De .Net Framework 2.0 y más allá, puede cambiar la altura memoria intermedia dentro de su propio programa con 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); 
} 

La altura máxima es de Int16.MaxValue - 1.

+0

Hmm, ¿de verdad puedes? Bueno saber. Todavía no es suficiente para 100000 artículos. :) – Botz3000

+0

Eso me lleva a 67235, pero lo más importante es que explica el problema: D –

+0

Rock'n'Roll! : D –

11

300 parece ser el tamaño predeterminado de la memoria intermedia de la consola. Esta es una configuración de Windows y no está relacionada con su aplicación.

Puede cambiar el tamaño del búfer de la consola creando un acceso directo al ejecutable. Luego haz clic derecho en el atajo y selecciona Propiedades. Vaya a la pestaña Opciones y cambie el tamaño del búfer.

Parece que no revisé esa función en mucho tiempo, pero parece ser modificable ahora. Consulte Alfred Myers answer

+3

Se puede cambiar a través de Console.BufferHeight hasta Int16.MaxValue - 1 –

2

No verá más que eso porque la consola no almacena en el búfer más de 300 filas de manera predeterminada. Use el cuadro de diálogo de configuración de la consola para cambiar esto - I crea puede simplemente iniciar un símbolo del sistema y cambiarlos allí, luego ejecutar su programa.

Alfred ya ha señalado cómo su aplicación puede cambiar la altura del búfer.

+1

Sí lo es. Se puede cambiar a través de Console.BufferHeight hasta Int16.MaxValue - 1 –

+0

Estoy corregido. Voy a editar en consecuencia. –

2

Esto no tiene nada que ver con C#, pero en realidad el búfer de salida en el símbolo del sistema tiene solo 300 líneas de forma predeterminada. Puede cambiar eso en la configuración de la ventana, aunque tal vez esta sea una oportunidad para intentar implementar una función similar a "más", que se rompe cada vez que se genera una pantalla de datos. Luego, cuando presiona una tecla, se emite otra pantalla, etc.

+0

Se puede cambiar a través de Console.BufferHeight hasta Int16.MaxValue - 1 –

3

Es la consola, no su aplicación.

Como alternativa, puede usar Debug.WriteLine (System.Diagnostics) y usar la ventana Salida en Visual Studio. Tiene un búfer mucho más grande (solo asegúrese de ejecutar una compilación Debug).

+0

Puede cambiar la configuración de la consola. Se puede cambiar a través de Console.BufferHeight hasta Int16.MaxValue - 1 –

Cuestiones relacionadas