C#
 Computer >> コンピューター >  >> プログラミング >> C#

【C#】Console.KeyAvailableプロパティの使い方とサンプルコード

Console.KeyAvailableプロパティとは

C#のConsole.KeyAvailableプロパティは、標準入力ストリームにキー入力が利用可能かどうかを示す値を取得するためのプロパティです。戻り値はbool型で、キー入力があればtrue、なければfalseを返します。

このプロパティは読み取り専用(getのみ)であり、Console.ReadKey()メソッドと組み合わせることで、処理をブロックすることなくキー入力の有無を確認しながらループ処理を実装できます。

構文

public static bool KeyAvailable { get; }

使用例1:キー入力を検出して表示する

以下は、Console.KeyAvailableプロパティを使ってキー入力を検出するC#のサンプルコードです。

using System;
using System.Threading;

class Demo {
    public static void Main(string[] args) {
        ConsoleKeyInfo cs = new ConsoleKeyInfo();
        do {
            Console.WriteLine("\n何かキーを押すと表示されます。「Q」キーで終了します。");
            // キー入力があるまで100ミリ秒ごとに待機
            while (Console.KeyAvailable == false) Thread.Sleep(100);
            cs = Console.ReadKey(true);
            Console.WriteLine("「{0}」キーが押されました。", cs.Key);
        } while (cs.Key != ConsoleKey.Q);
    }
}

実行結果

何かキーを押すと表示されます。「Q」キーで終了します。
「A」キーが押されました。

何かキーを押すと表示されます。「Q」キーで終了します。
「B」キーが押されました。

何かキーを押すと表示されます。「Q」キーで終了します。

使用例2:待機間隔と終了キーを変更した場合

次の例では、Thread.Sleep()の待機時間を200ミリ秒に変更し、終了キーを「P」に設定しています。

using System;
using System.Threading;

class Demo {
    public static void Main(string[] args) {
        ConsoleKeyInfo cs = new ConsoleKeyInfo();
        do {
            Console.WriteLine("\n何かキーを押すと表示されます。「P」キーで終了します。");
            // キー入力があるまで200ミリ秒ごとに待機
            while (Console.KeyAvailable == false) Thread.Sleep(200);
            cs = Console.ReadKey(true);
            Console.WriteLine("「{0}」キーが押されました。", cs.Key);
        } while (cs.Key != ConsoleKey.P);
    }
}

実行結果

何かキーを押すと表示されます。「P」キーで終了します。
「X」キーが押されました。

何かキーを押すと表示されます。「P」キーで終了します。

ポイント解説

  • Console.KeyAvailableは、キーバッファに入力が溜まっているかどうかを確認するだけで、呼び出してもプログラムは停止しません。
  • while (Console.KeyAvailable == false) Thread.Sleep(100);のように記述すると、キー入力を待つ間のCPU負荷を抑えられます。
  • Console.ReadKey(true)の引数にtrueを指定すると、押されたキーがコンソール画面に表示されません。
  1. 【C#】Console.KeyAvailableプロパティの使い方とサンプルコード

    Console.KeyAvailableプロパティとはC#のConsole.KeyAvailableプロパティは、標準入力ストリームにキー入力が利用可能かどうかを示す値を取得するためのプロパティです。戻り値はbool型で、キー入力があればtrue、なければfalseを返します。このプロパティは読み取り専用(getのみ)であり、Console.ReadKey()メソッドと組み合わせることで、処理をブロックすることなくキー入力の有無を確認しながらループ処理を実装できます。構文public static bool KeyAvailable { get; }使用例1:キー入力を検出して表示する以下は、

  2. C#のConsoleクラスとは?主要プロパティの使い方を実例付きで解説

    C#のConsoleクラスは、コンソールアプリケーションにおける標準入力・標準出力・標準エラー出力の各ストリームを表すクラスです。テキストの表示や入力の読み取りだけでなく、文字色や背景色の変更、カーソル位置やサイズの制御など、コンソール操作に関するさまざまな機能が提供されています。ここでは、Consoleクラスの代表的なプロパティの使い方を、サンプルコードと実行結果とあわせて解説します。Console.CursorLeftプロパティコンソール上のカーソル位置(左端から数えた列位置)を変更するには、Console.CursorLeftプロパティを使用します。サンプルコードusing System