C#コンソールアプリ入門|作り方・文字出力・入力処理を初心者向けにサンプル付きで解説

はじめに

C#を初めて学ぶとき、多くの人が最初に作るのが「C#コンソールアプリ」です。コンソールアプリは、黒い画面やターミナル上で文字を表示したり、キーボードから入力を受け取ったりするシンプルなアプリケーションです。

画面デザインを作る必要がないため、C#の基本文法を学ぶのに向いています。Console.WriteLineで文字を出力し、Console.ReadLineで入力を受け取り、変数・条件分岐・繰り返し処理などを少しずつ覚えていけば、初心者でも簡単なプログラムを作れるようになります。

この記事では、C#コンソールアプリの作り方から、文字出力、入力処理、数値変換、エラー対策、初心者向けサンプルまでを順番に解説します。Visual Studio、Visual Studio Code、dotnetコマンドを使った作成方法も紹介するので、自分の環境に合わせて学習を進められます。

1. C#コンソールアプリとは?初心者向けに基本を解説

1-1. コンソールアプリの意味とできること

C#コンソールアプリとは、コンソール画面で動作するC#のアプリケーションです。コンソール画面とは、Windowsの「コマンドプロンプト」や「PowerShell」、macOSやLinuxの「ターミナル」のように、文字を入力したり表示したりする画面のことです。

C#コンソールアプリでは、たとえば次のようなことができます。

  • 文字を画面に表示する

  • キーボードから入力を受け取る

  • 入力された数値を計算する

  • 条件によって表示内容を変える

  • 繰り返し処理でメニューを表示する

  • ファイルを読み書きする

  • 簡単な自動化ツールを作る

コンソールアプリは見た目こそシンプルですが、プログラムの基本を学ぶには十分な機能があります。最初は「Hello, World!」と表示するだけでも、C#プログラムがどのように動くのかを理解する大切な一歩になります。

1-2. C#学習の最初にコンソールアプリが選ばれる理由

C#学習の最初にコンソールアプリが選ばれる理由は、画面作成や複雑な設定に悩まされず、プログラムの基本に集中できるからです。

WindowsアプリやWebアプリを作る場合、ボタン、画面レイアウト、イベント処理、HTML、CSS、サーバー設定など、覚えることが一気に増えます。一方、C#コンソールアプリでは、まず文字の出力と入力だけでプログラムを動かせます。

たとえば、次のコードはコンソールに文字を表示するだけのシンプルなC#プログラムです。

C#
Console.WriteLine("こんにちは、C#コンソールアプリ!");

この1行を実行するだけで、画面に文字が表示されます。初心者にとって「書いたコードがすぐ動く」ことはとても重要です。成功体験を積みながら、少しずつ変数、if文、for文、メソッドなどを学べます。

1-3. Windowsアプリ・Webアプリとの違い

C#では、コンソールアプリ以外にもWindowsアプリやWebアプリを作れます。それぞれの違いを簡単に整理すると、次のようになります。

種類特徴主な用途
コンソールアプリ文字ベースで動作する学習、計算ツール、自動化ツール
Windowsアプリウィンドウやボタンを持つデスクトップアプリ
Webアプリブラウザ上で動作するWebサイト、業務システム
モバイルアプリスマートフォンで動作するiOS・Androidアプリ

C#コンソールアプリは、画面がシンプルな分、プログラムの流れを理解しやすいのが特徴です。最初にコンソールアプリで基礎を固めておくと、あとからWindowsアプリやWebアプリに進んだときにも理解しやすくなります。

1-4. この記事で作れるようになるもの

この記事を読み進めると、次のようなC#コンソールアプリを作れるようになります。

名前を入力してください:田中
こんにちは、田中さん!
1つ目の数値を入力してください:10
2つ目の数値を入力してください:20
合計は 30 です。
点数を入力してください:85
合格です。

さらに、繰り返し処理を使った簡単なメニュー付きアプリも作成します。

=== メニュー ===
1: あいさつ
2: 現在の点数判定
0: 終了
番号を入力してください:

これらのサンプルを通して、C#コンソールアプリの作り方、文字出力、入力処理、数値変換、条件分岐、繰り返し処理を実践的に学べます。

2. C#コンソールアプリを作る前に必要な準備

2-1. C#開発に必要な環境

C#コンソールアプリを作るには、主に次の環境が必要です。

  • .NET SDK

  • コードを書くためのエディターまたはIDE

  • コンソールを実行できる環境

.NET SDKは、C#のプログラムを作成・ビルド・実行するために必要な開発キットです。Visual Studioを使う場合は、インストール時に必要なワークロードを選ぶことで.NET SDKも一緒に準備できます。Visual Studio Codeを使う場合は、.NET SDKやC# Dev Kitなどを別途準備するのが一般的です。Microsoft公式ドキュメントでも、Visual Studio、Visual Studio Code、.NET SDKを使ったコンソールアプリ作成手順が案内されています。

2-2. Visual Studioを使う場合の準備

Visual Studioは、Microsoftが提供している統合開発環境です。C#開発に必要な機能がまとまっているため、初心者にも使いやすい環境です。

Visual Studioを使う場合は、インストール時に「.NET デスクトップ開発」ワークロードを選択します。これにより、C#コンソールアプリの作成に必要な環境をまとめて準備できます。

Visual Studioでは、画面上の操作で新しいプロジェクトを作成し、実行ボタンを押すだけでコンソールアプリを動かせます。Microsoft公式のVisual Studioチュートリアルでも、C#コンソールアプリの作成、実行、デバッグの手順が紹介されています。

初心者が最初にC#コンソールアプリを学ぶなら、Visual Studioは有力な選択肢です。補完機能やエラー表示、デバッグ機能が充実しているため、つまずいたときにも原因を見つけやすくなります。

2-3. Visual Studio Codeを使う場合の準備

Visual Studio Codeは、軽量で拡張機能が豊富なコードエディターです。C#コンソールアプリの開発にも利用できます。

Visual Studio CodeでC#を開発する場合は、主に次のものを準備します。

  • Visual Studio Code

  • .NET SDK

  • C# Dev KitなどのC#関連拡張機能

Visual Studio Codeは軽くて使いやすい一方、Visual Studioよりも自分で設定する部分が多くなります。ターミナルでdotnetコマンドを使う機会も増えるため、コマンド操作に慣れたい人に向いています。

Visual Studio Codeを使った.NETコンソールアプリの作成手順も、Microsoft公式ドキュメントで案内されています。

2-4. .NET SDKが入っているか確認する方法

.NET SDKがインストールされているか確認するには、コマンドプロンプト、PowerShell、またはターミナルを開いて次のコマンドを入力します。

Bash
dotnet --version

バージョン番号が表示されれば、.NET SDKはインストールされています。

8.0.xxx

また、インストール済みのSDKを一覧で確認したい場合は、次のコマンドを使います。

Bash
dotnet --list-sdks

何も表示されない場合や、dotnetが認識されない場合は、.NET SDKがインストールされていないか、パスが正しく設定されていない可能性があります。その場合は、.NET SDKをインストールし直してください。

2-5. 初心者はどの開発環境を選ぶべきか

初心者には、まずVisual Studioがおすすめです。理由は、C#コンソールアプリの作成から実行までを画面操作で進めやすく、エラーの場所も見つけやすいからです。

一方で、将来的にWeb開発、クラウド開発、複数言語の開発をしたい場合は、Visual Studio Codeに慣れておくのも良い選択です。

迷った場合は、次のように選ぶとよいでしょう。

目的おすすめ
C#を初めて学ぶVisual Studio
画面操作で簡単に始めたいVisual Studio
軽いエディターを使いたいVisual Studio Code
コマンド操作にも慣れたいVisual Studio Code
学校や入門書に合わせたい指定された環境

この記事では、Visual Studio、Visual Studio Code、dotnetコマンドの3つの方法を紹介します。

3. C#コンソールアプリの作り方

3-1. Visual Studioで新しいコンソールアプリを作成する手順

Visual StudioでC#コンソールアプリを作成する基本手順は、次のとおりです。

  1. Visual Studioを起動する

  2. 「新しいプロジェクトの作成」を選択する

  3. 検索欄に「コンソール」と入力する

  4. 「コンソール アプリ」を選択する

  5. 言語が「C#」になっていることを確認する

  6. プロジェクト名を入力する

  7. 保存場所を選択する

  8. 作成ボタンを押す

プロジェクト名は、たとえばHelloConsoleのようにわかりやすい名前にします。作成が完了すると、Program.csというファイルが表示されます。

最初から次のようなコードが書かれている場合があります。

C#
Console.WriteLine("Hello, World!");

この状態で実行ボタンを押すと、コンソール画面にHello, World!と表示されます。Microsoft公式ドキュメントでも、Visual Studioで「Console App」テンプレートを選んでコンソールアプリを作成する流れが説明されています。

3-2. Visual Studio Codeでコンソールアプリを作成する手順

Visual Studio CodeでC#コンソールアプリを作る場合は、ターミナルを使ってプロジェクトを作成します。

まず、任意の作業フォルダを作成します。例として、CSharpSampleというフォルダを作成します。

Bash
mkdir CSharpSample
cd CSharpSample

次に、コンソールアプリのプロジェクトを作成します。

Bash
dotnet new console

作成後、Visual Studio Codeでフォルダを開きます。

Bash
code .

Program.csが作成されているので、コードを編集して実行できます。

実行するには、ターミナルで次のコマンドを入力します。

Bash
dotnet run

Hello, World!と表示されれば成功です。

3-3. dotnetコマンドでプロジェクトを作成する方法

C#コンソールアプリは、dotnetコマンドだけでも作成できます。基本的な流れは次のとおりです。

Bash
dotnet new console -n MyConsoleApp

このコマンドを実行すると、MyConsoleAppという名前のフォルダとプロジェクトが作成されます。

作成されたフォルダに移動します。

Bash
cd MyConsoleApp

アプリを実行します。

Bash
dotnet run

実行結果は次のようになります。

Hello, World!

dotnet new consoleは、コンソールアプリ用のテンプレートからプロジェクトを作成するコマンドです。コマンド操作に慣れておくと、Visual Studio Codeやターミナル中心の開発でも役立ちます。

3-4. 作成されたファイルとフォルダの役割

C#コンソールアプリを作成すると、主に次のようなファイルとフォルダが作られます。

MyConsoleApp
├─ Program.cs
├─ MyConsoleApp.csproj
├─ bin
└─ obj

それぞれの役割は次のとおりです。

名前役割
Program.csC#のコードを書くメインファイル
.csprojプロジェクト設定ファイル
binビルド後の実行ファイルなどが入る
objビルド途中の一時ファイルが入る

初心者が最初に編集するのは、基本的にProgram.csです。binobjは自動生成されるフォルダなので、最初のうちは直接編集する必要はありません。

.csprojファイルには、対象の.NETバージョンやプロジェクトの種類などが書かれています。通常は自動で管理されるため、慣れるまでは触らなくても問題ありません。

3-5. Program.csの基本構造を理解する

最近のC#コンソールアプリでは、Program.csに次のような短いコードだけが書かれていることがあります。

C#
Console.WriteLine("Hello, World!");

これは「トップレベルステートメント」という書き方です。従来のC#では、次のようにclassMainメソッドを書く必要がありました。

C#
using System;

class Program
{
static void Main(string[] args)
{
Console.WriteLine("Hello, World!");
}
}

現在のテンプレートでは、初心者でもすぐにコードを書き始められるように、より短い書き方が使われています。.NET 6以降のコンソールアプリテンプレートでは、トップレベルステートメントによるシンプルなProgram.csが生成されることがMicrosoft公式ドキュメントでも説明されています。

この記事では、初心者にわかりやすいように、主に次のような短い書き方を使います。

C#
Console.WriteLine("C#コンソールアプリを学習中です");

4. C#コンソールアプリで文字を出力する方法

4-1. Console.WriteLineで文字を表示する

C#コンソールアプリで文字を表示するには、Console.WriteLineを使います。

C#
Console.WriteLine("こんにちは");

実行結果は次のようになります。

こんにちは

Console.WriteLineのかっこの中に表示したい文字を書きます。文字列はダブルクォーテーション"で囲みます。

C#
Console.WriteLine("C#を勉強しています");
Console.WriteLine("コンソールアプリを作っています");

実行結果は次のようになります。

C#を勉強しています
コンソールアプリを作っています

Console.WriteLineは、文字を表示したあとに自動で改行します。そのため、複数回書くと1行ずつ表示されます。

4-2. Console.WriteとConsole.WriteLineの違い

C#コンソールアプリの出力には、Console.Writeもよく使います。

Console.WriteLineは表示後に改行しますが、Console.Writeは改行しません。

C#
Console.Write("こんにちは");
Console.Write("C#");

実行結果は次のようになります。

こんにちはC#

一方、Console.WriteLineを使うと次のようになります。

C#
Console.WriteLine("こんにちは");
Console.WriteLine("C#");

実行結果は次のとおりです。

こんにちは
C#

入力を促すメッセージでは、Console.Writeを使うことがよくあります。

C#
Console.Write("名前を入力してください:");
string name = Console.ReadLine() ?? "";

Console.WriteLine("こんにちは、" + name + "さん");

実行例は次のようになります。

名前を入力してください:田中
こんにちは、田中さん

Console.Writeを使うと、入力欄を同じ行に表示できるため、ユーザーにとってわかりやすい画面になります。

4-3. 変数の値をコンソールに出力する

変数に入れた値も、コンソールに表示できます。

C#
string name = "佐藤";
int age = 20;

Console.WriteLine(name);
Console.WriteLine(age);

実行結果は次のようになります。

佐藤
20

文字列と変数を組み合わせて表示することもできます。

C#
string name = "佐藤";
int age = 20;

Console.WriteLine("名前は" + name + "です");
Console.WriteLine("年齢は" + age + "歳です");

実行結果は次のとおりです。

名前は佐藤です
年齢は20歳です

+を使うと、文字列と変数をつなげて表示できます。ただし、つなげる部分が多くなると読みづらくなるため、次に紹介する文字列補間を使うと便利です。

4-4. 文字列補間を使って見やすく出力する

C#では、文字列補間を使うと、変数の値をわかりやすく文字列に埋め込めます。

文字列補間は、文字列の前に$を付け、変数を{}で囲んで使います。

C#
string name = "佐藤";
int age = 20;

Console.WriteLine($"名前は{name}です");
Console.WriteLine($"年齢は{age}歳です");

実行結果は次のようになります。

名前は佐藤です
年齢は20歳です

計算結果をそのまま埋め込むこともできます。

C#
int price = 1000;
int count = 3;

Console.WriteLine($"合計金額は{price * count}円です");

実行結果は次のとおりです。

合計金額は3000円です

C#コンソールアプリでは、変数の値を表示する場面が多いため、文字列補間は早めに覚えておくと便利です。

4-5. 改行・空白・記号を出力するサンプル

コンソールに見やすく表示するには、改行や空白、記号をうまく使うことが大切です。

C#
Console.WriteLine("=== メニュー ===");
Console.WriteLine("1: 登録");
Console.WriteLine("2: 表示");
Console.WriteLine("0: 終了");

実行結果は次のようになります。

=== メニュー ===
1: 登録
2: 表示
0: 終了

空行を入れたい場合は、何も書かずにConsole.WriteLine()を使います。

C#
Console.WriteLine("1行目");
Console.WriteLine();
Console.WriteLine("3行目");

実行結果は次のとおりです。

1行目

3行目

タブを入れたい場合は、\tを使います。

C#
Console.WriteLine("商品\t価格");
Console.WriteLine("りんご\t100円");
Console.WriteLine("みかん\t80円");

実行結果は次のようになります。

商品    価格
りんご 100円
みかん 80円

改行を文字列の中に含めたい場合は、\nを使えます。

C#
Console.WriteLine("こんにちは\nC#コンソールアプリ");

実行結果は次のとおりです。

こんにちは
C#コンソールアプリ

5. C#コンソールアプリで入力処理を行う方法

5-1. Console.ReadLineでキーボード入力を受け取る

C#コンソールアプリでキーボード入力を受け取るには、Console.ReadLineを使います。

C#
Console.Write("名前を入力してください:");
string name = Console.ReadLine() ?? "";

Console.WriteLine($"こんにちは、{name}さん");

実行例は次のようになります。

名前を入力してください:山田
こんにちは、山田さん

Console.ReadLineは、ユーザーが入力してEnterキーを押すまで待機します。入力された内容は文字列として受け取れます。

?? ""は、入力結果がnullだった場合に空文字を使うための書き方です。初心者のうちは「安全に文字列として扱うための書き方」と理解しておけば問題ありません。

5-2. 入力された文字列を変数に保存する

Console.ReadLineで受け取った値は、変数に保存して使います。

C#
Console.Write("好きな食べ物を入力してください:");
string food = Console.ReadLine() ?? "";

Console.WriteLine($"あなたの好きな食べ物は{food}です。");

実行例は次のとおりです。

好きな食べ物を入力してください:カレー
あなたの好きな食べ物はカレーです。

入力値は、あとから条件分岐や計算に使えます。

C#
Console.Write("合言葉を入力してください:");
string password = Console.ReadLine() ?? "";

if (password == "csharp")
{
Console.WriteLine("ログイン成功");
}
else
{
Console.WriteLine("合言葉が違います");
}

実行例は次のようになります。

合言葉を入力してください:csharp
ログイン成功

文字列の比較では、==を使います。入力された文字と指定した文字が同じかどうかを判定できます。

5-3. 数値入力をint型に変換する方法

Console.ReadLineで受け取った値は、基本的に文字列です。そのため、数値として計算したい場合は、int型などに変換する必要があります。

簡単な変換には、int.Parseを使えます。

C#
Console.Write("年齢を入力してください:");
string input = Console.ReadLine() ?? "";

int age = int.Parse(input);

Console.WriteLine($"あなたは{age}歳です。");

実行例は次のとおりです。

年齢を入力してください:25
あなたは25歳です。

ただし、int.Parseには注意点があります。数値ではない文字が入力されると、エラーになります。

年齢を入力してください:abc

このような入力があると、プログラムが例外で停止してしまいます。初心者向けのC#コンソールアプリでも、入力ミスに対応するためには次に紹介するTryParseを使うのがおすすめです。

5-4. TryParseを使って入力エラーを防ぐ

int.TryParseを使うと、入力された文字列を数値に変換できるかどうかを安全に判定できます。

C#
Console.Write("年齢を入力してください:");
string input = Console.ReadLine() ?? "";

bool success = int.TryParse(input, out int age);

if (success)
{
Console.WriteLine($"あなたは{age}歳です。");
}
else
{
Console.WriteLine("数値を入力してください。");
}

実行例は次のようになります。

年齢を入力してください:25
あなたは25歳です。

数値以外を入力した場合は、次のように表示されます。

年齢を入力してください:abc
数値を入力してください。

TryParseは、変換に成功するとtrue、失敗するとfalseを返します。変換できた数値は、out int ageで指定した変数に入ります。

C#コンソールアプリでは、ユーザーが何を入力するかわかりません。そのため、実用的なアプリを作るならint.Parseよりもint.TryParseを使う方が安全です。

5-5. 入力値を使って結果を表示するサンプル

ここでは、入力された数値を使って税込価格を表示するサンプルを作ります。

C#
Console.Write("商品の価格を入力してください:");
string input = Console.ReadLine() ?? "";

if (int.TryParse(input, out int price))
{
double taxIncluded = price * 1.1;
Console.WriteLine($"税込価格は{taxIncluded}円です。");
}
else
{
Console.WriteLine("正しい数値を入力してください。");
}

実行例は次のとおりです。

商品の価格を入力してください:1000
税込価格は1100円です。

小数点なしで表示したい場合は、0という書式を指定できます。

C#
Console.WriteLine($"税込価格は{taxIncluded:0}円です。");

実行結果は次のようになります。

税込価格は1100円です。

入力、変換、計算、出力の流れは、C#コンソールアプリで非常によく使います。基本パターンとして覚えておきましょう。

6. 初心者向けサンプルでC#コンソールアプリを作ってみよう

6-1. 名前を入力してあいさつを表示するアプリ

最初に、名前を入力してあいさつを表示するシンプルなC#コンソールアプリを作ります。

C#
Console.Write("名前を入力してください:");
string name = Console.ReadLine() ?? "";

Console.WriteLine($"こんにちは、{name}さん!");
Console.WriteLine("C#コンソールアプリへようこそ。");

実行例は次のとおりです。

名前を入力してください:鈴木
こんにちは、鈴木さん!
C#コンソールアプリへようこそ。

このサンプルでは、次の処理を行っています。

  1. Console.Writeで入力を促す

  2. Console.ReadLineで名前を受け取る

  3. 受け取った名前を変数nameに保存する

  4. Console.WriteLineであいさつを表示する

短いコードですが、C#コンソールアプリの基本である「出力」と「入力」の両方を使っています。

6-2. 2つの数値を入力して計算するアプリ

次に、2つの数値を入力して合計を表示するアプリを作ります。

C#
Console.Write("1つ目の数値を入力してください:");
string input1 = Console.ReadLine() ?? "";

Console.Write("2つ目の数値を入力してください:");
string input2 = Console.ReadLine() ?? "";

if (int.TryParse(input1, out int number1) && int.TryParse(input2, out int number2))
{
int sum = number1 + number2;
Console.WriteLine($"合計は{sum}です。");
}
else
{
Console.WriteLine("数値を正しく入力してください。");
}

実行例は次のとおりです。

1つ目の数値を入力してください:10
2つ目の数値を入力してください:20
合計は30です。

このコードでは、2つの入力が両方とも数値に変換できた場合だけ計算します。

C#
int.TryParse(input1, out int number1) && int.TryParse(input2, out int number2)

&&は「かつ」という意味です。左側と右側の条件がどちらも成立した場合に、if文の中の処理が実行されます。

引き算、掛け算、割り算も追加すると、簡単な電卓アプリに発展させられます。

C#
Console.WriteLine($"足し算:{number1 + number2}");
Console.WriteLine($"引き算:{number1 - number2}");
Console.WriteLine($"掛け算:{number1 * number2}");
Console.WriteLine($"割り算:{(double)number1 / number2}");

6-3. 条件分岐を使った簡単な判定アプリ

次に、点数を入力して合格・不合格を判定するアプリを作ります。

C#
Console.Write("点数を入力してください:");
string input = Console.ReadLine() ?? "";

if (int.TryParse(input, out int score))
{
if (score >= 80)
{
Console.WriteLine("とても良い成績です。");
}
else if (score >= 60)
{
Console.WriteLine("合格です。");
}
else
{
Console.WriteLine("不合格です。");
}
}
else
{
Console.WriteLine("数値を入力してください。");
}

実行例は次のとおりです。

点数を入力してください:85
とても良い成績です。

このサンプルでは、ifelse ifelseを使って条件を分けています。

条件表示内容
80点以上とても良い成績です。
60点以上80点未満合格です。
60点未満不合格です。

条件分岐を使うと、入力された値に応じて処理を変えられます。C#コンソールアプリだけでなく、WindowsアプリやWebアプリでも必ず使う重要な文法です。

6-4. 繰り返し処理を使ったメニュー付きアプリ

今度は、メニューを繰り返し表示するC#コンソールアプリを作ります。

C#
while (true)
{
Console.WriteLine("=== メニュー ===");
Console.WriteLine("1: あいさつ");
Console.WriteLine("2: 点数判定");
Console.WriteLine("0: 終了");
Console.Write("番号を入力してください:");

string choice = Console.ReadLine() ?? "";

if (choice == "1")
{
Console.Write("名前を入力してください:");
string name = Console.ReadLine() ?? "";
Console.WriteLine($"こんにちは、{name}さん!");
}
else if (choice == "2")
{
Console.Write("点数を入力してください:");
string input = Console.ReadLine() ?? "";

if (int.TryParse(input, out int score))
{
if (score >= 60)
{
Console.WriteLine("合格です。");
}
else
{
Console.WriteLine("不合格です。");
}
}
else
{
Console.WriteLine("数値を入力してください。");
}
}
else if (choice == "0")
{
Console.WriteLine("終了します。");
break;
}
else
{
Console.WriteLine("正しい番号を入力してください。");
}

Console.WriteLine();
}

このコードでは、while (true)でメニューを繰り返し表示しています。0が入力されたら、breakでループを終了します。

実行例は次のとおりです。

=== メニュー ===
1: あいさつ
2: 点数判定
0: 終了
番号を入力してください:1
名前を入力してください:田中
こんにちは、田中さん!

=== メニュー ===
1: あいさつ
2: 点数判定
0: 終了
番号を入力してください:0
終了します。

繰り返し処理を使うと、1回実行して終わるだけでなく、ユーザーが選択しながら使えるアプリを作れるようになります。

6-5. 完成コードと実行結果

ここでは、名前入力、計算、判定、メニューをまとめた完成コードを紹介します。

C#
while (true)
{
Console.WriteLine("=== C#コンソールアプリ サンプル ===");
Console.WriteLine("1: あいさつを表示");
Console.WriteLine("2: 2つの数値を計算");
Console.WriteLine("3: 点数を判定");
Console.WriteLine("0: 終了");
Console.Write("番号を入力してください:");

string menu = Console.ReadLine() ?? "";
Console.WriteLine();

if (menu == "1")
{
Console.Write("名前を入力してください:");
string name = Console.ReadLine() ?? "";
Console.WriteLine($"こんにちは、{name}さん!");
}
else if (menu == "2")
{
Console.Write("1つ目の数値を入力してください:");
string input1 = Console.ReadLine() ?? "";

Console.Write("2つ目の数値を入力してください:");
string input2 = Console.ReadLine() ?? "";

if (int.TryParse(input1, out int number1) && int.TryParse(input2, out int number2))
{
Console.WriteLine($"足し算:{number1 + number2}");
Console.WriteLine($"引き算:{number1 - number2}");
Console.WriteLine($"掛け算:{number1 * number2}");

if (number2 != 0)
{
Console.WriteLine($"割り算:{(double)number1 / number2}");
}
else
{
Console.WriteLine("0で割ることはできません。");
}
}
else
{
Console.WriteLine("数値を正しく入力してください。");
}
}
else if (menu == "3")
{
Console.Write("点数を入力してください:");
string input = Console.ReadLine() ?? "";

if (int.TryParse(input, out int score))
{
if (score >= 80)
{
Console.WriteLine("とても良い成績です。");
}
else if (score >= 60)
{
Console.WriteLine("合格です。");
}
else
{
Console.WriteLine("不合格です。");
}
}
else
{
Console.WriteLine("数値を入力してください。");
}
}
else if (menu == "0")
{
Console.WriteLine("アプリを終了します。");
break;
}
else
{
Console.WriteLine("メニュー番号を正しく入力してください。");
}

Console.WriteLine();
}

実行例は次のようになります。

=== C#コンソールアプリ サンプル ===
1: あいさつを表示
2: 2つの数値を計算
3: 点数を判定
0: 終了
番号を入力してください:2

1つ目の数値を入力してください:10
2つ目の数値を入力してください:5
足し算:15
引き算:5
掛け算:50
割り算:2

このサンプルには、C#コンソールアプリでよく使う基本要素が含まれています。

  • 文字の出力

  • キーボード入力

  • 文字列の変数保存

  • 数値変換

  • 条件分岐

  • 繰り返し処理

  • メニュー処理

  • エラー対策

初心者は、このコードをそのまま動かしたあと、表示メッセージを変えたり、メニューを追加したりして練習すると理解が深まります。

7. C#コンソールアプリでよく使う基本文法

7-1. 変数とデータ型

変数とは、値を入れておく箱のようなものです。C#では、変数を使うときにデータ型を指定します。

代表的なデータ型は次のとおりです。

データ型内容
int整数10, 100
double小数3.14, 1.5
string文字列"こんにちは"
bool真偽値true, false
char1文字'A'

使用例は次のとおりです。

C#
int age = 20;
double height = 170.5;
string name = "山田";
bool isStudent = true;

Console.WriteLine($"名前:{name}");
Console.WriteLine($"年齢:{age}");
Console.WriteLine($"身長:{height}");
Console.WriteLine($"学生ですか:{isStudent}");

実行結果は次のようになります。

名前:山田
年齢:20
身長:170.5
学生ですか:True

C#は型を大切にする言語です。数値、文字列、真偽値を正しく使い分けることが、エラーの少ないプログラムを書く基本になります。

7-2. if文による条件分岐

if文は、条件によって処理を分けるために使います。

C#
int score = 75;

if (score >= 60)
{
Console.WriteLine("合格です。");
}
else
{
Console.WriteLine("不合格です。");
}

実行結果は次のとおりです。

合格です。

複数の条件を分けたい場合は、else ifを使います。

C#
int score = 90;

if (score >= 80)
{
Console.WriteLine("A評価");
}
else if (score >= 60)
{
Console.WriteLine("B評価");
}
else
{
Console.WriteLine("C評価");
}

条件式では、次のような比較演算子を使います。

演算子意味
==等しい
!=等しくない
>より大きい
>=以上
<より小さい
<=以下

C#コンソールアプリでは、入力された値を判定するときにif文をよく使います。

7-3. for文・while文による繰り返し

同じ処理を何度も実行したい場合は、繰り返し処理を使います。

回数が決まっている場合は、for文が便利です。

C#
for (int i = 1; i <= 5; i++)
{
Console.WriteLine($"{i}回目の表示です");
}

実行結果は次のとおりです。

1回目の表示です
2回目の表示です
3回目の表示です
4回目の表示です
5回目の表示です

条件を満たしている間繰り返したい場合は、while文を使います。

C#
int count = 1;

while (count <= 5)
{
Console.WriteLine($"{count}回目");
count++;
}

メニュー付きのC#コンソールアプリでは、次のようにwhile (true)を使うこともあります。

C#
while (true)
{
Console.WriteLine("0を入力すると終了します");
string input = Console.ReadLine() ?? "";

if (input == "0")
{
break;
}
}

breakを使うと、繰り返し処理を途中で終了できます。

7-4. 配列とリストの基本

複数の値をまとめて扱いたい場合は、配列やリストを使います。

配列の例は次のとおりです。

C#
string[] fruits = { "りんご", "みかん", "バナナ" };

Console.WriteLine(fruits[0]);
Console.WriteLine(fruits[1]);
Console.WriteLine(fruits[2]);

実行結果は次のようになります。

りんご
みかん
バナナ

配列の番号は0から始まります。fruits[0]は1番目の要素です。

繰り返し処理と組み合わせると、すべての要素を表示できます。

C#
string[] fruits = { "りんご", "みかん", "バナナ" };

foreach (string fruit in fruits)
{
Console.WriteLine(fruit);
}

あとから要素を追加したい場合は、Listが便利です。

C#
List<string> names = new List<string>();

names.Add("田中");
names.Add("佐藤");
names.Add("鈴木");

foreach (string name in names)
{
Console.WriteLine(name);
}

Listを使う場合は、環境によって次のusingが必要になることがあります。

C#
using System.Collections.Generic;

コンソールアプリで名前一覧、商品一覧、点数一覧などを扱うときに、配列やリストが役立ちます。

7-5. メソッドを使って処理を分ける

コードが長くなってきたら、メソッドを使って処理を分けると読みやすくなります。

たとえば、あいさつを表示する処理をメソッドにすると次のようになります。

C#
void SayHello()
{
Console.WriteLine("こんにちは");
Console.WriteLine("C#コンソールアプリを学習しましょう");
}

SayHello();

実行結果は次のとおりです。

こんにちは
C#コンソールアプリを学習しましょう

引数を使うと、メソッドに値を渡せます。

C#
void SayHello(string name)
{
Console.WriteLine($"こんにちは、{name}さん");
}

SayHello("田中");
SayHello("佐藤");

実行結果は次のようになります。

こんにちは、田中さん
こんにちは、佐藤さん

戻り値を使うと、メソッドから結果を返せます。

C#
int Add(int a, int b)
{
return a + b;
}

int result = Add(10, 20);
Console.WriteLine($"合計は{result}です");

実行結果は次のとおりです。

合計は30です

メソッドを使うと、同じ処理を再利用でき、コード全体の見通しが良くなります。

8. C#コンソールアプリでよくあるエラーと対処法

8-1. コンソール画面がすぐ閉じる場合

C#コンソールアプリを実行したあと、画面がすぐ閉じて結果が見えないことがあります。特に、実行ファイルを直接ダブルクリックした場合に起こりやすい現象です。

対処法として、最後にConsole.ReadLineを追加して、Enterキーが押されるまで待機させます。

C#
Console.WriteLine("処理が完了しました。");
Console.WriteLine("Enterキーを押すと終了します。");
Console.ReadLine();

Visual Studioで実行する場合は、デバッグなしで開始したり、ターミナル上でdotnet runを使ったりすると結果を確認しやすくなります。

8-2. Consoleが認識されない場合

Consoleが認識されない場合、次のような原因が考えられます。

  • C#ファイルではない場所にコードを書いている

  • プロジェクトが正しく作成されていない

  • 古い形式のコードでusing System;がない

  • 入力ミスがある

古い形式のC#コードでは、先頭に次の記述が必要になることがあります。

C#
using System;

従来の書き方では、次のようになります。

C#
using System;

class Program
{
static void Main(string[] args)
{
Console.WriteLine("こんにちは");
}
}

現在のコンソールアプリテンプレートでは、短いトップレベルステートメントで書けることが多いですが、学習している教材や環境によってコードの形が異なる場合があります。自分の環境に合わせて確認しましょう。

8-3. 入力した数値でエラーが出る場合

数値入力でよくあるエラーは、int.Parseに数値以外の文字を渡してしまうことです。

C#
string input = Console.ReadLine() ?? "";
int number = int.Parse(input);

このコードでabcのような文字を入力すると、エラーになります。

安全に処理するには、int.TryParseを使います。

C#
Console.Write("数値を入力してください:");
string input = Console.ReadLine() ?? "";

if (int.TryParse(input, out int number))
{
Console.WriteLine($"入力された数値は{number}です。");
}
else
{
Console.WriteLine("数値ではありません。");
}

ユーザー入力を扱うC#コンソールアプリでは、入力ミスが起きる前提でコードを書くことが大切です。

8-4. 実行ボタンを押しても動かない場合

Visual Studioで実行ボタンを押しても動かない場合は、次の点を確認しましょう。

  • 正しいプロジェクトを開いているか

  • Program.csにコードを書いているか

  • ビルドエラーが出ていないか

  • スタートアッププロジェクトが正しく設定されているか

  • コンソールアプリとして作成されているか

エラー一覧に赤いマークが表示されている場合は、まずエラーメッセージを確認します。よくあるミスには、セミコロン;の付け忘れ、ダブルクォーテーションの閉じ忘れ、かっこの数の不一致があります。

例として、次のコードはセミコロンがないためエラーになります。

C#
Console.WriteLine("こんにちは")

正しくは次のように書きます。

C#
Console.WriteLine("こんにちは");

C#では、基本的に1つの命令の最後にセミコロンを付けます。エラーが出たら、まず行末やかっこの対応を確認しましょう。

8-5. 日本語が文字化けする場合

C#コンソールアプリで日本語が文字化けする場合、コンソールの文字コードが原因になっていることがあります。

対処法の一つとして、Program.csの先頭付近に次のコードを追加します。

C#
Console.OutputEncoding = System.Text.Encoding.UTF8;

入力側も調整したい場合は、次のように書けます。

C#
Console.InputEncoding = System.Text.Encoding.UTF8;
Console.OutputEncoding = System.Text.Encoding.UTF8;

サンプル全体は次のとおりです。

C#
Console.InputEncoding = System.Text.Encoding.UTF8;
Console.OutputEncoding = System.Text.Encoding.UTF8;

Console.Write("名前を入力してください:");
string name = Console.ReadLine() ?? "";

Console.WriteLine($"こんにちは、{name}さん");

ただし、文字化けの原因は実行環境によって異なります。Windows Terminal、PowerShell、コマンドプロンプト、Visual Studioの出力環境などで表示が変わることもあります。文字化けが起きた場合は、エディターの文字コードとコンソールの文字コードを確認しましょう。

9. C#コンソールアプリをさらに学ぶ次のステップ

9-1. ファイルの読み書きを学ぶ

C#コンソールアプリに慣れてきたら、次にファイルの読み書きを学ぶのがおすすめです。

たとえば、テキストファイルに文字を書き込むには次のようにします。

C#
File.WriteAllText("sample.txt", "こんにちは、C#");
Console.WriteLine("ファイルを書き込みました。");

ファイルを読み込むには、次のようにします。

C#
string text = File.ReadAllText("sample.txt");
Console.WriteLine(text);

実行結果は次のようになります。

こんにちは、C#

ファイル操作を覚えると、メモアプリ、ログ出力、CSV読み込み、簡単なデータ管理ツールなどを作れるようになります。

9-2. クラスとオブジェクト指向を学ぶ

C#はオブジェクト指向言語です。コンソールアプリで基本文法に慣れたら、クラスを学びましょう。

クラスの簡単な例は次のとおりです。

C#
class Person
{
public string Name { get; set; } = "";
public int Age { get; set; }

public void Introduce()
{
Console.WriteLine($"私は{Name}です。{Age}歳です。");
}
}

Person person = new Person();
person.Name = "田中";
person.Age = 25;
person.Introduce();

実行結果は次のようになります。

私は田中です。25歳です。

クラスを使うと、データと処理をまとめられます。C#で本格的なアプリを作るには、クラスとオブジェクト指向の理解が欠かせません。

9-3. デバッグの使い方を覚える

C#コンソールアプリの学習では、デバッグ機能を使えるようになると効率が大きく上がります。

デバッグでは、次のようなことができます。

  • コードを1行ずつ実行する

  • 変数の中身を確認する

  • 条件分岐の流れを見る

  • エラーの原因を探す

Visual Studioでは、行番号の左側をクリックしてブレークポイントを設定できます。その状態で実行すると、指定した行で処理が止まり、変数の値を確認できます。

たとえば、次のコードでscoreの値を確認しながら実行できます。

C#
int score = 75;

if (score >= 60)
{
Console.WriteLine("合格です。");
}
else
{
Console.WriteLine("不合格です。");
}

初心者のうちは、エラーが出るとコード全体がわからなくなることがあります。デバッグを使うと、どこまで正しく動いているのかを確認できるため、問題解決がしやすくなります。

9-4. 簡単な実用ツールを作ってみる

C#コンソールアプリの基本を覚えたら、簡単な実用ツールを作ってみましょう。

おすすめの練習テーマは次のとおりです。

  • 消費税計算ツール

  • 割り勘計算ツール

  • BMI計算ツール

  • 点数管理アプリ

  • ToDoリスト

  • CSVファイル読み込みツール

  • フォルダ内のファイル一覧表示ツール

たとえば、BMI計算ツールは次のように作れます。

C#
Console.Write("身長をメートルで入力してください:");
string heightInput = Console.ReadLine() ?? "";

Console.Write("体重をkgで入力してください:");
string weightInput = Console.ReadLine() ?? "";

if (double.TryParse(heightInput, out double height) &&
double.TryParse(weightInput, out double weight))
{
double bmi = weight / (height * height);
Console.WriteLine($"BMIは{bmi:0.0}です。");
}
else
{
Console.WriteLine("数値を正しく入力してください。");
}

実行例は次のとおりです。

身長をメートルで入力してください:1.70
体重をkgで入力してください:65
BMIは22.5です。

実用ツールを作ると、C#コンソールアプリの知識が実際の問題解決につながる感覚をつかめます。

9-5. WebアプリやWindowsアプリ開発へ進む

C#コンソールアプリで基本を学んだあとは、目的に応じて次の分野に進めます。

進みたい方向学ぶ技術
Webアプリを作りたいASP.NET Core
Windowsアプリを作りたいWPF、Windows Forms
ゲームを作りたいUnity
業務ツールを作りたいファイル操作、データベース
APIを作りたいASP.NET Core Web API

C#コンソールアプリで学ぶ変数、条件分岐、繰り返し、メソッド、クラスは、どの分野でも使います。最初にコンソールアプリで基礎を固めておくことで、次の学習がスムーズになります。

10. C#コンソールアプリに関するよくある質問

10-1. C#コンソールアプリは何に使えますか?

C#コンソールアプリは、学習用だけでなく、実用的なツール作成にも使えます。

たとえば、次のような用途があります。

  • C#の基本文法の学習

  • 簡単な計算ツール

  • ファイル整理ツール

  • CSV処理ツール

  • ログ出力ツール

  • バッチ処理

  • 自動化スクリプト

  • データ変換ツール

画面デザインが不要な処理や、決まった作業を自動化する用途に向いています。特に、社内ツールや開発補助ツールでは、コンソールアプリが使われることもあります。

10-2. 初心者でもC#コンソールアプリは作れますか?

初心者でもC#コンソールアプリは作れます。むしろ、C#を初めて学ぶ人にとって、コンソールアプリは最初に取り組みやすい形式です。

最初は次の順番で学ぶのがおすすめです。

  1. Console.WriteLineで文字を表示する

  2. Console.ReadLineで入力を受け取る

  3. 変数に値を保存する

  4. if文で条件分岐する

  5. for文やwhile文で繰り返す

  6. メソッドで処理を分ける

  7. 配列やリストで複数の値を扱う

一度にすべて覚える必要はありません。短いサンプルを動かしながら、少しずつ理解していきましょう。

10-3. Visual StudioとVisual Studio Codeはどちらがおすすめですか?

C#初心者にはVisual Studioがおすすめです。理由は、プロジェクト作成、実行、デバッグが画面操作でわかりやすく、C#開発に必要な機能が最初からそろっているからです。

一方、Visual Studio Codeは軽量で、さまざまな言語を扱いやすいエディターです。コマンド操作に慣れたい人や、シンプルな開発環境を好む人に向いています。

選び方の目安は次のとおりです。

状況おすすめ
C#を初めて学ぶVisual Studio
デバッグをしっかり使いたいVisual Studio
軽いエディターが好きVisual Studio Code
コマンド操作に慣れたいVisual Studio Code
学習教材が指定しているその教材に合わせる

どちらを選んでも、C#コンソールアプリは作成できます。大切なのは、環境選びで悩みすぎず、まずコードを書いて実行してみることです。

10-4. Console.WriteLineとConsole.ReadLineの違いは何ですか?

Console.WriteLineは、コンソール画面に文字を表示するための命令です。

C#
Console.WriteLine("こんにちは");

実行結果は次のとおりです。

こんにちは

一方、Console.ReadLineは、キーボードから入力された文字を受け取るための命令です。

C#
string name = Console.ReadLine() ?? "";

両方を組み合わせると、入力と出力を行うC#コンソールアプリを作れます。

C#
Console.Write("名前を入力してください:");
string name = Console.ReadLine() ?? "";

Console.WriteLine($"こんにちは、{name}さん");

役割をまとめると、次のようになります。

命令役割
Console.WriteLine文字を表示する
Console.Write改行せずに文字を表示する
Console.ReadLineキーボード入力を受け取る

C#コンソールアプリでは、この3つを頻繁に使います。

10-5. C#コンソールアプリを終了させない方法はありますか?

C#コンソールアプリをすぐに終了させたくない場合は、最後にConsole.ReadLineを追加します。

C#
Console.WriteLine("処理が完了しました。");
Console.WriteLine("Enterキーを押すと終了します。");
Console.ReadLine();

これで、ユーザーがEnterキーを押すまでコンソール画面が閉じません。

また、メニュー付きアプリのように、ユーザーが終了を選ぶまで動かし続ける方法もあります。

C#
while (true)
{
Console.WriteLine("1: 続ける");
Console.WriteLine("0: 終了");
Console.Write("番号を入力してください:");

string input = Console.ReadLine() ?? "";

if (input == "0")
{
Console.WriteLine("終了します。");
break;
}

Console.WriteLine("処理を続けます。");
}

while文とbreakを使うことで、ユーザーの操作に応じて終了タイミングを決められます。

まとめ

C#コンソールアプリは、C#を初めて学ぶ人に最適なアプリケーション形式です。画面デザインや複雑な設定を気にせず、文字の出力、キーボード入力、変数、条件分岐、繰り返し処理など、プログラミングの基本を集中して学べます。

まず覚えたい基本は、次の3つです。

C#
Console.WriteLine("文字を表示する");
C#
string input = Console.ReadLine() ?? "";
C#
int.TryParse(input, out int number);

Console.WriteLineで文字を表示し、Console.ReadLineで入力を受け取り、TryParseで安全に数値へ変換する。この流れを理解すれば、簡単なC#コンソールアプリを自分で作れるようになります。

最初は、名前を入力してあいさつを表示するだけでも十分です。慣れてきたら、計算アプリ、判定アプリ、メニュー付きアプリ、ファイル読み書きツールへと発展させていきましょう。

C#コンソールアプリで身につけた基礎は、Windowsアプリ、Webアプリ、ゲーム開発、業務システム開発など、さまざまな分野で役立ちます。まずは小さなサンプルを動かしながら、C#の基本を一つずつ身につけていきましょう。