C#でprintはどう書く?Console.WriteLine・Write・変数出力を初心者向けに解説

はじめに

C#で文字列や数値を画面に表示したいとき、「C#ではprintをどう書くの?」と疑問に思う方は多いでしょう。

Pythonのprint()に相当するC#の基本的な出力方法は、Console.WriteLineです。

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

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

Hello, World!

この記事では、Console.WriteLineConsole.Writeの違い、変数の値を出力する方法、改行や複数行の文字列を扱う方法を、初心者向けにわかりやすく解説します。

1. C#の「print」に相当するのはConsole.WriteLine

1-1. C#には基本的にprint関数がない

Pythonでは、次のようにprint()を使って文字列を出力します。

Python
print("Hello")

一方、C#にはPythonと同じ名前の標準的なprint関数はありません。コンソール画面に文字や数値を出力する場合は、主に次のメソッドを使用します。

C#
Console.WriteLine("Hello");

Console.WriteLineは、指定した内容をコンソールに表示し、その後で改行するメソッドです。

C#で「printしたい」と考えた場合は、まずConsole.WriteLineを使うと覚えておきましょう。

1-2. 文字や数値を画面に出力する基本構文

Console.WriteLineの基本構文は次のとおりです。

C#
Console.WriteLine(出力したい内容);

文字列を出力するときは、内容をダブルクォーテーション"で囲みます。

C#
Console.WriteLine("C#を勉強しています");

数値はダブルクォーテーションで囲まず、そのまま記述できます。

C#
Console.WriteLine(100);

計算式を渡すことも可能です。

C#
Console.WriteLine(10 + 20);

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

C#を勉強しています
100
30

C#では、文の末尾にセミコロン;を付ける必要があります。

1-3. System.Console.WriteLineと書く場合との違い

Console.WriteLineは、省略せずに書くと次のようになります。

C#
System.Console.WriteLine("Hello");

Consoleクラスは、Systemという名前空間に含まれています。そのため、ファイルの先頭に次の記述がある場合は、System.を省略できます。

C#
using System;

class Program
{
static void Main()
{
Console.WriteLine("Hello");
}
}

using System;を書かない場合でも、完全な名前を使えば出力できます。

C#
class Program
{
static void Main()
{
System.Console.WriteLine("Hello");
}
}

どちらも実行結果は同じです。

Hello

一般的なC#のコードでは、読みやすくするためにusing System;を記述し、Console.WriteLineと書くことが多いです。

なお、近年のC#ではトップレベルステートメントを利用できるため、プロジェクトの設定によってはクラスやMainメソッドを書かず、次の1行だけでも実行できます。

C#
Console.WriteLine("Hello");

1-4. 最小限のサンプルコードと実行結果

C#で文字列を出力する最小限のサンプルは次のとおりです。

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

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

Hello, C#!

従来形式のプログラムとして書く場合は、次のようになります。

C#
using System;

class Program
{
static void Main()
{
Console.WriteLine("Hello, C#!");
}
}

Console.WriteLineの丸括弧内に、画面へ表示したい文字列や数値を指定するのが基本です。

2. Console.WriteLineの基本的な使い方

2-1. 文字列を出力する

文字列を出力する場合は、ダブルクォーテーションで囲んだ内容をConsole.WriteLineに渡します。

C#
Console.WriteLine("おはようございます");
Console.WriteLine("C#の学習を始めます");

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

おはようございます
C#の学習を始めます

Console.WriteLineは出力後に自動で改行するため、2つの文字列は別々の行に表示されます。

文字列の中にダブルクォーテーションを表示したい場合は、直前にバックスラッシュを付けます。

C#
Console.WriteLine("彼は\"こんにちは\"と言いました");

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

彼は"こんにちは"と言いました

2-2. 数値を出力する

整数や小数もConsole.WriteLineで出力できます。

C#
Console.WriteLine(123);
Console.WriteLine(3.14);
Console.WriteLine(-50);

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

123
3.14
-50

計算結果を直接出力することもできます。

C#
Console.WriteLine(5 + 3);
Console.WriteLine(10 * 4);
Console.WriteLine(20 / 5);

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

8
40
4

文字列としての数字と数値は意味が異なります。

C#
Console.WriteLine("10" + "20");
Console.WriteLine(10 + 20);

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

1020
30

"10""20"は文字列なので連結されます。一方、1020は数値なので足し算が行われます。

2-3. 空行を出力する

引数を指定せずにConsole.WriteLine()を呼び出すと、空行を出力できます。

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

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

1行目

3行目

文章のまとまりを分けたい場合や、コンソールの表示を読みやすくしたい場合に便利です。

空文字列を渡しても、同じように改行されます。

C#
Console.WriteLine("");

ただし、空行を出力する目的であれば、引数を省略した次の書き方がわかりやすいでしょう。

C#
Console.WriteLine();

2-4. 複数行の文字列を出力する

複数行の文字列を出力したい場合は、逐語的文字列リテラルを利用できます。文字列の先頭に@を付ける書き方です。

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

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

1行目
2行目
3行目

逐語的文字列リテラルでは、コード上の改行がそのまま文字列に含まれます。

新しいバージョンのC#では、三重のダブルクォーテーションを使った生文字列リテラルも利用できます。

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

実行結果は同じです。

1行目
2行目
3行目

生文字列リテラルは、複数行の文章やJSON、HTMLなどをコード内に記述するときに便利です。

2-5. 改行コードを使って出力する

文字列の途中で改行したい場合は、改行コード\nを使用できます。

C#
Console.WriteLine("1行目\n2行目\n3行目");

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

1行目
2行目
3行目

\nは改行を表す特殊な文字です。このような特殊文字はエスケープシーケンスと呼ばれます。

実行環境に適した改行を明示的に挿入したい場合は、Environment.NewLineも使用できます。

C#
Console.WriteLine(
"1行目" + Environment.NewLine +
"2行目" + Environment.NewLine +
"3行目"
);

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

1行目
2行目
3行目

通常のコンソール出力では\nでも問題ありませんが、OSに適した改行文字を使いたい場面ではEnvironment.NewLineが役立ちます。

3. Console.WriteLineとConsole.Writeの違い

3-1. Console.WriteLineは出力後に改行する

Console.WriteLineは、指定した内容を表示した後、自動的に改行します。

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

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

Hello
World

それぞれの出力が別の行に表示されるため、メッセージや変数の値を1行ずつ確認したい場合に適しています。

3-2. Console.Writeは改行せずに出力する

Console.Writeは、指定した内容を表示した後に改行しません。

C#
Console.Write("Hello");
Console.Write("World");

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

HelloWorld

2回目の出力は、1回目の出力に続けて表示されます。

文字の間に空白を入れたい場合は、文字列にスペースを含めます。

C#
Console.Write("Hello ");
Console.Write("World");

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

Hello World

3-3. WriteLineとWriteの使い分け

Console.WriteLineConsole.Writeは、改行の有無によって使い分けます。

出力するたびに改行したい場合は、Console.WriteLineを使用します。

C#
Console.WriteLine("名前:田中");
Console.WriteLine("年齢:20歳");

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

名前:田中
年齢:20歳

入力を促すメッセージを表示し、その直後にユーザーの入力を受け取りたい場合は、Console.Writeが適しています。

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

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

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

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

入力位置をメッセージと同じ行に置けるため、対話形式のコンソールアプリでよく使用されます。

3-4. 同じ行に複数の値を並べる方法

同じ行に複数の値を表示したい場合は、Console.Writeを複数回使用できます。

C#
Console.Write("A");
Console.Write(" ");
Console.Write("B");
Console.Write(" ");
Console.Write("C");

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

A B C

最後だけConsole.WriteLineにすると、すべてを同じ行に表示した後で改行できます。

C#
Console.Write("A");
Console.Write(" ");
Console.Write("B");
Console.Write(" ");
Console.WriteLine("C");

文字列補間を使って、1回のConsole.WriteLineで複数の値を並べることも可能です。

C#
int x = 10;
int y = 20;

Console.WriteLine($"x = {x}, y = {y}");

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

x = 10, y = 20

単純な出力では、複数回のConsole.Writeよりも、文字列補間を使ったほうがコードを読みやすくできます。

4. C#で変数の値を出力する方法

4-1. 変数だけをConsole.WriteLineで出力する

変数の値を表示する場合は、変数名をConsole.WriteLineに渡します。

C#
string name = "山田";
int age = 25;

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

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

山田
25

数値の計算結果を変数に保存してから出力することもできます。

C#
int price = 500;
int quantity = 3;
int total = price * quantity;

Console.WriteLine(total);

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

1500

変数の中身を確認できるため、プログラムの動作確認や簡単なデバッグにも役立ちます。

4-2. 文字列と変数を「+」で連結して出力する

文字列と変数を組み合わせる方法の一つが、+演算子による文字列連結です。

C#
string name = "佐藤";

Console.WriteLine("名前は" + name + "です");

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

名前は佐藤です

数値の変数も文字列と連結できます。

C#
int age = 20;

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

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

年齢は20歳です

ただし、数値の計算と文字列連結を同時に行う場合は注意が必要です。

C#
int a = 10;
int b = 20;

Console.WriteLine("合計:" + a + b);

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

合計:1020

"合計:" + aの時点で文字列になり、その後のbも文字列として連結されるためです。計算結果を出力するには、足し算を丸括弧で囲みます。

C#
Console.WriteLine("合計:" + (a + b));

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

合計:30

4-3. 文字列補間「$」で変数を埋め込む

C#で文字列と変数を組み合わせるなら、文字列補間が便利です。文字列の先頭に$を付け、埋め込みたい変数や式を波括弧{}で囲みます。

C#
string name = "鈴木";
int age = 30;

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

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

名前は鈴木です
年齢は30歳です

複数の変数も1つの文字列に埋め込めます。

C#
string product = "ノート";
int price = 200;
int quantity = 3;

Console.WriteLine($"{product}を{quantity}冊購入しました");
Console.WriteLine($"合計金額は{price * quantity}円です");

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

ノートを3冊購入しました
合計金額は600円です

波括弧の中には、変数だけでなく計算式も記述できます。

数値の表示形式を指定することも可能です。

C#
int price = 1234567;
double rate = 0.125;

Console.WriteLine($"価格:{price:N0}円");
Console.WriteLine($"割合:{rate:P1}");

実行環境によって区切り記号などは異なる場合がありますが、日本語環境ではおおむね次のように表示されます。

価格:1,234,567円
割合:12.5%

文字列補間は、+による連結よりも変数の位置を把握しやすく、現在のC#では特に使いやすい出力方法です。

4-4. 複合書式「{0}」で変数を出力する

Console.WriteLineでは、{0}{1}を使った複合書式も利用できます。

C#
string name = "高橋";
int age = 28;

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

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

名前は高橋です
年齢は28歳です

複数の値を指定する場合は、番号を0から順番に割り当てます。

C#
string name = "伊藤";
int age = 35;
string city = "東京";

Console.WriteLine("名前:{0}、年齢:{1}、住所:{2}", name, age, city);

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

名前:伊藤、年齢:35、住所:東京

同じ番号を複数回使用することもできます。

C#
string word = "C#";

Console.WriteLine("{0}を学び、{0}でアプリを作る", word);

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

C#を学び、C#でアプリを作る

複合書式でも、数値の表示形式を指定できます。

C#
int price = 1234567;

Console.WriteLine("価格:{0:N0}円", price);

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

価格:1,234,567円

複合書式は既存のC#コードでよく見かけます。ただし、番号と変数の対応を確認する必要があるため、新しくコードを書く場合は文字列補間のほうが読みやすいことが多いでしょう。

まとめ

C#には、Pythonのprint()と同じ名前の標準的な関数はありません。コンソールに文字列や数値を出力するときは、基本的にConsole.WriteLineを使用します。

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

Console.WriteLineは出力後に改行し、Console.Writeは改行せずに出力します。

C#
Console.Write("Hello ");
Console.WriteLine("World");

変数と文字列を組み合わせる場合は、文字列補間を使うと読みやすく記述できます。

C#
string name = "山田";
int age = 20;

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

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

名前は山田、年齢は20歳です

C#でprintに相当する処理を行いたいときは、まずConsole.WriteLineを使い、改行したくない場面ではConsole.Writeを選びましょう。