2009-09-02 20 views
10

Lorsque j'exécute ce code, le numéro en haut de la fenêtre de sortie est 99701. Pourquoi ne puis-je pas voir tout le chemin à travers 1? En fait, je vois tous les numéros sortis, mais sur la fenêtre de la console, je ne peux que défiler assez haut pour voir 99701 (je devine). J'utilise Visual C# express sur Vista Home. : D(Console.BufferHeight) Je ne peux pas voir/défiler pour voir toute la sortie de la console avec 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) fonctionne bien, mais Console.Write (s + "\ n") ne fonctionne pas. Je devine que je peux seulement faire défiler tant de nouvelles lignes?

+0

+1 pour votre question, parce que beaucoup de gens se sont trompés;) –

Répondre

25

NET Framework 2.0 et au-delà, vous pouvez changer la hauteur de la mémoire tampon à partir de votre propre programme avec 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 hauteur maximale est Int16.MaxValue - 1.

+0

Hmm, en effet vous pouvez? Bon à savoir. Toujours pas assez pour 100000 articles cependant. :) – Botz3000

+0

Cela m'amène à 67235, mais plus important encore, il explique le problème: D –

+0

Rock'n'Roll! : D –

11

300 semble être votre taille de tampon de console par défaut. Ceci est un paramètre Windows et il n'est pas lié à votre application.

Vous pouvez modifier la taille du tampon de la console en créant un raccourci vers l'exécutable. Puis faites un clic droit sur le raccourci et sélectionnez Propriétés. Allez dans l'onglet Options et modifiez la taille de la mémoire tampon.

Semblez que je n'ai pas vérifié cette fonctionnalité depuis longtemps, mais il semble être modifiable maintenant. Voir Alfred Myers answer

+3

Il peut être changé via Console.BufferHeight jusqu'à Int16.MaxValue - 1 –

2

Vous ne voyez pas plus que cela parce que la console ne met pas plus de 300 lignes en mémoire tampon par défaut. Utilisez la boîte de dialogue des paramètres pour la console pour changer cela - Je croire vous pouvez simplement démarrer une invite de commande et les modifier là, puis exécutez votre programme.

Alfred a déjà indiqué comment votre application peut modifier la hauteur de la mémoire tampon.

+1

Oui c'est. Il peut être changé via Console.BufferHeight jusqu'à Int16.MaxValue - 1 –

+0

Je suis corrigé. Je vais modifier en conséquence. –

2

Cela n'a rien à voir avec C#, mais en réalité le tampon de sortie dans l'invite de commande est long de seulement 300 lignes par défaut. Vous pouvez changer cela dans les paramètres de la fenêtre, bien que cela soit peut-être l'occasion d'essayer d'implémenter une fonctionnalité de type "plus", qui sort de la boucle chaque fois qu'un écran de données est sorti. Ensuite, lorsque vous appuyez sur une touche, il sort un autre écran, etc.

+0

Il peut être modifié via Console.BufferHeight jusqu'à Int16.MaxValue - 1 –

3

C'est la console pas votre application. Comme alternative, vous pouvez utiliser Debug.WriteLine (System.Diagnostics) et utiliser la fenêtre de sortie dans Visual Studio. Il a un tampon beaucoup plus grand (assurez-vous juste d'exécuter une version Debug).

+0

Vous pouvez modifier les paramètres de la console. Il peut être changé via Console.BufferHeight jusqu'à Int16.MaxValue - 1 –