2009-09-02 7 views
10

Quando eseguo questo codice, il numero nella parte superiore della finestra di output è 99701. Perché non riesco a vedere fino in fondo 1? In realtà vedo tutti i numeri che vengono emessi, ma sulla finestra della console, posso solo SCROLL abbastanza alto da vedere 99701 (sto indovinando). Sto usando Visual C# Express su Vista Home. : D(Console.BufferHeight) Non riesco a vedere/scorrere per vedere tutta l'output della console 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) funziona bene, ma Console.Write (s + "\ n") no. Immagino di poter scorrere solo attraverso tante nuove righe?

+0

+1 per il vostro domanda, perché molte persone hanno sbagliato;) –

risposta

25

Da Net Framework 2.0 e oltre, è possibile modificare l'altezza del buffer da dentro il proprio programma 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); 
} 

L'altezza massima è Int16.MaxValue - 1.

+0

Hmm, infatti è possibile? Buono a sapersi. Non è ancora abbastanza per 100000 articoli. :) – Botz3000

+0

Questo mi porta a 67235, ma ancora più importante spiega il problema: D –

+0

Rock'n'Roll! : D –

11

300 sembra essere la dimensione del buffer della console predefinita. Questa è un'impostazione di Windows e non è correlata alla tua applicazione.

È possibile modificare la dimensione del buffer della console creando un collegamento all'eseguibile. Quindi fare clic con il tasto destro sul collegamento e selezionare Proprietà. Vai nella scheda Opzioni e modifica la dimensione del buffer.

Sembra che non abbia controllato questa funzione da molto tempo, ma ora sembra essere modificabile. Vedi Alfred Myers answer

+3

Può essere modificato tramite Console.BufferHeight fino a Int16.MaxValue - 1 –

2

Non si vede più di quello perché la console non bufferizza più di 300 righe per impostazione predefinita. Utilizzare la finestra di dialogo delle impostazioni per la console per modificare questo - I credere si può solo avviare un prompt dei comandi e modificarli lì, quindi eseguire il programma.

Alfred ha già indicato come l'applicazione può modificare l'altezza del buffer.

+1

Sì, lo è. Può essere modificato tramite Console.BufferHeight fino a Int16.MaxValue - 1 –

+0

I stanno corretti. Modificherò di conseguenza. –

2

Questo non ha nulla a che fare con C#, ma in realtà il buffer di output nel prompt dei comandi è lungo solo 300 righe per impostazione predefinita. Puoi cambiarlo nelle impostazioni della finestra, anche se forse questa è un'opportunità per provare a implementare una funzione "più" simile, che esce dal ciclo ogni volta che viene prodotta una schermata di dati. Quindi quando si preme un tasto, viene emessa un'altra schermata, ecc.

+0

Può essere modificato tramite Console.BufferHeight fino a Int16.MaxValue - 1 –

3

È la console non la tua app.

In alternativa è possibile utilizzare Debug.WriteLine (System.Diagnostics) e utilizzare la finestra Output in Visual Studio. Ha un buffer molto più grande (assicurati di eseguire una build di Debug).

+0

È possibile modificare le impostazioni della console. Può essere modificato tramite Console.BufferHeight fino a Int16.MaxValue - 1 –