Caution

お使いのブラウザはJavaScriptが実行できない状態になっております。
当サイトはWebプログラミングの情報サイトの為、
JavaScriptが実行できない環境では正しいコンテンツが提供出来ません。
JavaScriptが実行可能な状態でご閲覧頂くようお願い申し上げます。

C#辞典

  1. トップページ
  2. C#辞典
  3. Console.ReadLine() / Console.ReadKey()

Console.ReadLine() / Console.ReadKey()

コンソールからユーザーの入力を受け取る『Console.ReadLine()』と、キー入力を1文字単位で読み取る『Console.ReadKey()』です。

構文
// 1行のテキスト入力を読み取ります(Enter キーで確定)。
string line = Console.ReadLine();

// 1文字のキー入力を待って読み取ります。
ConsoleKeyInfo key = Console.ReadKey();
ConsoleKeyInfo key = Console.ReadKey(bool intercept); // true で画面に表示しない
メソッド一覧
メソッド / プロパティ概要
Console.ReadLine()Enter キーまでの1行を文字列として返します。ストリームの末尾に達した場合は null を返します。
Console.ReadKey()次のキー入力を ConsoleKeyInfo 型で返します。入力した文字がコンソールに表示されます。
Console.ReadKey(true)キー入力を取得しますが、コンソールへのエコーを抑制します(パスワード入力などに使います)。
ConsoleKeyInfo.Key押されたキーを ConsoleKey 列挙型で返します。
ConsoleKeyInfo.KeyChar押されたキーの文字(char 型)を返します。
サンプルコード
using System;

// ReadLine() で文字列を受け取ります。
Console.Write("名前を入力してください: ");
string 名前 = Console.ReadLine();
Console.WriteLine($"こんにちは、{名前} さん!");

// 数値として使うには変換が必要です。
Console.Write("年齢を入力してください: ");
string 入力 = Console.ReadLine();
if (int.TryParse(入力, out int 年齢)) {
	Console.WriteLine($"来年は {年齢 + 1} 歳ですね。");
} else {
	Console.WriteLine("数値を入力してください。");
}

// ReadKey() で任意のキー入力を待ちます。
Console.WriteLine("何かキーを押してください...");
ConsoleKeyInfo キー情報 = Console.ReadKey();
Console.WriteLine(); // ReadKey は改行しないので手動で入れます。
Console.WriteLine($"押されたキー: {キー情報.Key}");
Console.WriteLine($"文字: {キー情報.KeyChar}");

// 特定のキーで処理を分岐します。
Console.WriteLine("Y/N で選択してください: ");
ConsoleKeyInfo 選択 = Console.ReadKey(true); // 入力文字を画面に表示しません。
if (選択.Key == ConsoleKey.Y) {
	Console.WriteLine("はいが選択されました。");
} else {
	Console.WriteLine("いいえが選択されました。");
}
概要

『Console.ReadLine()』は文字列を返すため、数値として使いたい場合は『int.Parse()』や『int.TryParse()』で変換する必要があります。ユーザー入力は必ずバリデーションを行ってください。

『Console.ReadKey()』はプログラムの一時停止(「何かキーを押してください」)やメニュー選択など、1キーで即座に反応する UI に適しています。intercepttrue を渡すと入力文字がコンソールに表示されないため、パスワード入力の実装にも使えます。

コンソールへの出力は『Console.WriteLine() / Console.Write()』を参照してください。

記事の間違いや著作権の侵害等ございましたらお手数ですがまでご連絡頂ければ幸いです。