C#の学習で最初に触れるのがコンソール出力です。
Console.WriteLine
はテキストを表示して改行する最も基本的なメソッドで、動作の確認やログ出力にも役立ちます。
本記事では、使い方の基本から改行やエスケープ、初心者がつまずきやすいポイントまで丁寧に解説します。
Console.WriteLineとは?C#のコンソール出力の基本
Console.WriteLineの役割
Console.WriteLine
は標準出力(コンソール)に文字や数値などを表示し、最後に改行を入れるメソッドです。
標準出力とは、プログラムの実行結果を画面に文字で示すための仕組みで、対話的な動作確認やログに最適です。
同じ仲間のConsole.Write
は改行を入れない点が違い、用途に応じて使い分けます。
Hello Worldの最小例
最初の一歩として、文字列を1行表示するだけの最小プログラムを示します。
トップレベル文を使うと、クラスやMain
メソッドの記述を省いてシンプルに書けます。
// Hello World を1行表示する最小のC#プログラム
// .NET 6以降の「トップレベル文」を使用
Console.WriteLine("Hello, World!");
Hello, World!
Console.WriteLineの使い方(基本構文と例)
文字列を出力する
最も基本的なのは、ダブルクオートで囲んだ文字列リテラルをそのまま表示する使い方です。
日本語も表示できます。
// 文字列をそのまま出力
Console.WriteLine("こんにちは C#");
Console.WriteLine("コンソールへ出力します");
こんにちは C#
コンソールへ出力します
数値や変数を出力する
Console.WriteLine
は文字列だけでなく、数値や真偽値などさまざまな型を文字列に変換して表示します。
変数の中身を確認するのにも使えます。
// 数値や真偽値、変数を出力
int score = 95; // 整数
double pi = 3.14159; // 小数
bool passed = true; // 真偽値
Console.WriteLine(score); // 95
Console.WriteLine(pi); // 3.14159
Console.WriteLine(passed); // True
// メッセージ + 値を続けて表示(この例は次節で詳述)
Console.WriteLine("スコア: " + score);
95
3.14159
True
スコア: 95
複数の値を並べて出力する(+で連結)
文字列と変数を並べたい場合、+
演算子で連結します。
スペースを入れたいときは明示的に文字列リテラルに含めます。
// 文字列と数値を + で連結して1行に出力
string name = "Taro";
int age = 20;
// 間にスペースや区切り文字を自分で入れる
Console.WriteLine("名前: " + name + ", 年齢: " + age + "歳");
// 数値同士の計算結果を表示したい場合は()で明確に
int a = 10;
int b = 5;
Console.WriteLine("合計: " + (a + b)); // (a + b) の結果で連結
名前: Taro, 年齢: 20歳
合計: 15
補足: 文字列補間($"..."
)を使うとより読みやすく書けますが、詳細は別記事で扱います。
改行と書式のポイント
WriteLineとWriteの違い
WriteLine
は表示後に改行、Write
は改行なしです。
横並びで表示する際はWrite
、行ごとに区切りたい場合はWriteLine
が便利です。
// Write は改行しない、WriteLine は改行する
Console.Write("A"); // 改行なし
Console.Write("B"); // 改行なし
Console.WriteLine("C"); // ここで改行
Console.WriteLine("D"); // 1行表示して改行
ABC
D
以下の表は違いの要点です。
メソッド | 自動改行 | 主な用途 |
---|---|---|
Console.WriteLine | あり | 1行ずつ結果を並べる、ログ出力 |
Console.Write | なし | 横に続けたいとき、プログレス表示など |
改行の有無を意識するだけで、見やすい出力になります。
改行やタブ(\n, \t)の使い方
文字列中で特殊な制御文字を使うと、行や列を整形できます。
代表的なのは\n
(改行)と\t
(タブ)です。
// \n で改行、\t でタブ区切り
Console.WriteLine("1\t2\t3");
Console.WriteLine("A\tB\tC");
Console.WriteLine("上段\n下段"); // 「上段」の次の行に「下段」を表示
1 2 3
A B C
上段
下段
環境によって改行コードは異なりますが、C#では\n
で問題なく扱えます。
クオート記号を出力する(“)
文字列を囲むダブルクオートそのものを表示したいときは、バックスラッシュでエスケープして"
と書きます。
// ダブルクオートを文字として出したい場合は \" を使う
Console.WriteLine("He said \"Hello\" to me.");
// @ を使う逐語的文字列なら "" と2つ重ねる(応用)
Console.WriteLine(@"He said ""Hello"" to me.");
He said "Hello" to me.
He said "Hello" to me.
空行を出力する(引数なし)
Console.WriteLine()
を引数なしで呼ぶと、空行(改行だけ)を出力できます。
出力の区切りや余白づくりに便利です。
Console.WriteLine("section 1");
Console.WriteLine(); // 空行を1つ入れる
Console.WriteLine("section 2");
section 1
section 2
よくあるつまずき(初心者向け)
Consoleが見つからない時(using System)
Console
が解決できないエラーはusing System;
の不足が原因であることが多いです。
ソースの先頭に追記するか、完全修飾名を使います。
// どちらかの方法で解消できる
// 方法1: using を先頭に書く
using System;
Console.WriteLine("OK");
// 方法2: 完全修飾名を使う(using 不要)
System.Console.WriteLine("OK (fully qualified)");
OK
OK (fully qualified)
.NET 6以降のテンプレートでは「暗黙の using」が有効な場合もありますが、プロジェクト設定次第なので明示しておくと安心です。
日本語が文字化けする時(出力エンコーディング)
Windowsのコンソールなどでは、デフォルトの文字コードがUTF-8でないため日本語が文字化けすることがあります。
Console.OutputEncoding
をUTF-8に設定すると解決しやすいです。
// 日本語出力の文字化け対策: UTF-8 を明示
using System.Text;
Console.OutputEncoding = Encoding.UTF8;
Console.WriteLine("こんにちは 世界"); // 正しく表示される可能性が高い
こんにちは 世界
Windowsの旧コンソールでうまくいかない場合は、コマンドプロンプトでchcp 65001
を実行してUTF-8に切り替える方法もあります。
計算と文字の連結の違いに注意
+
は数値なら加算、文字列が含まれると連結になるため、意図しない結果になりがちです。
計算結果を表示したいときは括弧で計算を先に行わせます。
int x = 1;
int y = 2;
// 連結の例(意図しない結果)
Console.WriteLine("合計: " + x + y); // "合計: 12" になる
// 正しい例: () で計算を先に
Console.WriteLine("合計: " + (x + y)); // "合計: 3"
// 参考: 文字列補間を使うと誤りにくい(詳細は別記事)
Console.WriteLine($"合計: {x + y}");
合計: 12
合計: 3
合計: 3
演算の優先順位を明示する括弧か、可読性の高い文字列補間を使うと安全です。
まとめ
Console.WriteLine
は「表示して改行」という最小限ながら強力な機能で、動作確認やログ出力の要になります。
書式制御ではWrite
との違いや\n
・\t
・"
の扱いを押さえ、空行で見やすさを整えると良いでしょう。
環境依存の文字化けはConsole.OutputEncoding = Encoding.UTF8;
で多くの場合解決できます。
最後に、加算と連結の違いを理解し、括弧や文字列補間で意図を明確にすることで、初心者が陥りやすい出力の混乱を避けられます。
まずは小さな出力から手を動かし、確実に挙動を掴んでいきましょう。