C#のConsole.Read()、ReadKey()、ReadLine()の違いを徹底解説!使い分けのポイント
C#でコンソールアプリケーションを開発する際、ユーザーからの入力を受け取るために使用する代表的なメソッドが「Read()」「ReadKey()」「ReadLine()」です。これらはいずれもSystem.Consoleクラスに属しますが、読み取る対象や戻り値、動作のタイミングが異なります。本記事では、それぞれのメソッドの特徴と使い分けについて詳しく解説します。
Read()メソッドとは
Console.Read()は、標準入力ストリームから次の1文字を読み取るメソッドです。戻り値はint型で、読み取った文字のUnicodeコード(文字コード)が返されます。重要なポイントとして、このメソッドはユーザーがEnterキーを押すまで処理をブロックし、Enterが押された時点でバッファ内の先頭の1文字を取得して終了します。
int z = Console.Read(); Console.WriteLine(z); // 入力された文字のコード値が出力される
たとえば「A」と入力すると、出力結果は「65」(AのASCIIコード)となります。文字そのものではなくコード値が必要な場合は、char型にキャストするかConvert.ToChar()を使って変換しましょう。また、入力ストリームの終端に達した場合は「-1」が返されます。
ReadKey()メソッドとは
Console.ReadKey()は、キーボードから押された単一のキーを即座に読み取るメソッドです。Read()と異なり、Enterキーを押す必要がありません。キーが押された瞬間に処理が完了し、戻り値はConsoleKeyInfo型として返されます。
この特性を活かせば、「何かキーを押してください...」といった一時停止の演出や、矢印キーを使ったメニュー操作なども簡単に実装できます。
ConsoleKeyInfo key = Console.ReadKey();
Console.WriteLine($"押されたキー: {key.Key}");
ReadLine()メソッドとは
Console.ReadLine()は、標準入力ストリームから1行分の文字列を読み取るメソッドです。ユーザーがEnterキーを押すまでの間に入力されたすべての文字をstring型として返します。名前や数値など、まとまったテキスト入力を受け付ける場合に最適です。
string name = Console.ReadLine();
Console.WriteLine($"こんにちは、{name}さん!");
実行例
以下は、ReadLine()を使用してコンソール画面を一時停止させる典型的なサンプルコードです。
using System;
class Program {
static void Main() {
int x = 10;
Console.WriteLine(x);
Console.Write("\nPress any key to continue... ");
Console.ReadLine();
}
}
出力結果
10 Press any key to continue...
3つのメソッドの比較まとめ
| メソッド | 読み取り単位 | 戻り値の型 | Enterキーの必要性 |
|---|---|---|---|
| Read() | 1文字 | int(文字コード) | 必要 |
| ReadKey() | 1キー入力 | ConsoleKeyInfo | 不要 |
| ReadLine() | 1行(文字列) | string | 必要 |
使い分けのポイント
- 数値や文字列など行単位の入力を受け付けたい場合 → ReadLine()を選択
- 「任意のキーを押して続行」のような一時停止を作りたい場合 → ReadKey()が便利
- 文字コード値として1文字を処理したい場合 → Read()を使用
用途に応じて適切なメソッドを選ぶことで、より使いやすいコンソールアプリケーションを実現できます。
-
JavaScriptにおける関数とメソッドの違いとは?わかりやすく解説
JavaScriptにおいて、関数とメソッドは本質的には同じものです。両者の違いは、メソッドがオブジェクトのプロパティとして定義された関数であるという点にあります。つまり、独立して定義されたものを「関数」、オブジェクトに紐づけられたものを「メソッド」と呼びます。 JavaScriptの関数の基本形 まず、一般的な関数の定義方法を見てみましょう。 function functionname(param1, param2){ // 処理内容 } JavaScriptのメソッドの例 メソッドは、オブジェクトに関連付けられた関数です。次の例では、employeeオブジェクトの中にdetails
-
C#におけるstringとStringの違いは何ですか?
C#のstringとStringの違いC#プログラミングにおいて、stringとStringはどちらも同じ型を指しますが、その扱いには微妙な違いがあります。Stringは.NET FrameworkのクラスであるSystem.Stringを直接表すものであり、一方、stringはC#言語が用意しているSystem.Stringのエイリアス(別名)です。つまり、両者はコンパイル後にまったく同じものとして扱われます。基本的な使い方の例string str = Welcome!;このように文字列変数を宣言する際は、通常小文字のstringを使用します。使い分けの目安厳密なルールはありませんが、一般的