11

このコードを実行すると、出力ウィンドウの上部に 99701 という数字が表示されます。1 まで表示されないのはなぜですか? 実際にはすべての数値が出力されているのがわかりますが、コンソール ウィンドウでは、99701 が表示されるまでスクロールすることしかできません (推測しています)。Vista Home で Visual C# Express を使用しています。: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") はうまくいきません。非常に多くの改行しか上にスクロールできないと思いますか?

4

5 に答える 5

26

.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 です。

于 2009-09-02T21:56:40.250 に答える
11

300 がデフォルトのコンソール バッファ サイズのようです。これは Windows の設定であり、アプリケーションとは関係ありません。

実行可能ファイルへのショートカットを作成することで、コンソールのバッファ サイズを変更できます。次に、ショートカットを右クリックして [プロパティ] を選択します。[オプション] タブに移動し、バッファ サイズを変更します。

長い間その機能をチェックしていなかったようですが、現在は変更可能のようです。アルフレッド・マイヤーズの回答を参照してください

于 2009-09-02T21:16:47.117 に答える
3

それはあなたのアプリではなくコンソールです。

別の方法として、Debug.WriteLine(System.Diagnostics)を使用して、VisualStudioの[出力]ウィンドウを使用することもできます。はるかに大きなバッファーがあります(必ずデバッグビルドを実行してください)。

于 2009-09-02T21:36:22.070 に答える
2

これは C# とは関係ありませんが、実際には、コマンド プロンプトの出力バッファーは既定で 300 行しかありません。これはウィンドウ設定で変更できますが、おそらくこれは、画面いっぱいのデータが出力されるたびにループから抜け出す「もっと」のような機能を実装する機会です。次に、キーを押すと、別の画面が出力されます。

于 2009-09-02T21:18:44.460 に答える
2

コンソールはデフォルトで 300 行を超えてバッファリングしないため、それ以上は表示されません。これを変更するには、コンソールの設定ダイアログを使用します。コマンドプロンプトを起動してそこで変更し、プログラムを実行するだけでよいと思います。

Alfred は、アプリケーションがバッファーの高さを変更する方法を既に指摘しています。

于 2009-09-02T21:17:41.793 に答える