C#のif else文を初心者向けに徹底解説|条件分岐の書き方・else if・よくあるエラーまでわかる
はじめに
C#でプログラムを書いていると、「条件によって処理を変えたい」という場面が必ず出てきます。
たとえば、次のような処理です。
「点数が60点以上なら合格と表示する」
「ログイン情報が正しければマイページを表示する」
「年齢が20歳以上なら成人向けのメッセージを表示する」
このように、条件によって実行する処理を分けるために使うのが、C#のif else文です。
if else文は、C#初心者が最初に学ぶ重要な構文のひとつです。書き方自体はシンプルですが、else ifとの違いや、比較演算子、論理演算子、波括弧の使い方などでつまずくこともあります。
この記事では、C#のif else文について、基本構文から実践的なサンプル、よくあるエラー、読みやすく書くコツまで初心者向けにわかりやすく解説します。
1. C#のif else文とは?条件分岐の基本を初心者向けに解説
1-1. if else文は「条件によって処理を分ける」ための構文
C#のif else文は、条件によって実行する処理を切り替えるための構文です。
たとえば、「年齢が20歳以上なら成人、そうでなければ未成年」と判定したい場合、if else文を使って次のように書けます。
C#int age = 18;
if (age >= 20)
{
Console.WriteLine("成人です");
}
else
{
Console.WriteLine("未成年です");
}
このコードでは、age >= 20が条件式です。
ageが20以上であればifの中の処理が実行されます。条件を満たさない場合は、elseの中の処理が実行されます。
つまり、if else文を使うことで、「条件に当てはまる場合」と「当てはまらない場合」で処理を分けられます。
1-2. if・else・else ifの役割の違い
C#の条件分岐では、主にif、else、else ifを使います。
ifは、最初に条件を判定するときに使います。
C#if (score >= 60)
{
Console.WriteLine("合格です");
}
elseは、ifの条件に当てはまらなかった場合の処理を書きます。
C#if (score >= 60)
{
Console.WriteLine("合格です");
}
else
{
Console.WriteLine("不合格です");
}
else ifは、複数の条件を順番に判定したいときに使います。
C#if (score >= 80)
{
Console.WriteLine("優秀です");
}
else if (score >= 60)
{
Console.WriteLine("合格です");
}
else
{
Console.WriteLine("不合格です");
}
それぞれの役割を整理すると、次のようになります。
| 構文 | 役割 |
|---|---|
| if | 最初の条件を判定する |
| else if | 追加の条件を判定する |
| else | どの条件にも当てはまらない場合に実行する |
ifは必ず必要ですが、else ifとelseは必要に応じて書きます。
1-3. C#でif else文を使う場面の具体例
C#のif else文は、さまざまな場面で使われます。
たとえば、次のような処理です。
C#int score = 75;
if (score >= 60)
{
Console.WriteLine("合格です");
}
else
{
Console.WriteLine("不合格です");
}
点数による合格判定です。
C#bool isLoggedIn = true;
if (isLoggedIn)
{
Console.WriteLine("マイページを表示します");
}
else
{
Console.WriteLine("ログインしてください");
}
ログイン状態によって表示内容を変える処理です。
C#string name = "";
if (name == "")
{
Console.WriteLine("名前を入力してください");
}
else
{
Console.WriteLine("こんにちは、" + name + "さん");
}
入力値が空かどうかを判定する処理です。
このように、if else文はユーザー入力、計算結果、ログイン状態、在庫状況、エラー判定など、プログラムのあらゆる場面で使われます。
1-4. この記事で学べること
この記事では、C#のif else文について次の内容を学べます。
C#のif文の基本的な書き方、if else文の使い方、else ifによる複数条件の分岐、比較演算子や論理演算子の使い方、初心者がやりがちなエラーと解決方法、読みやすい条件分岐を書くコツ、switch文や三項演算子との使い分け、実践的なサンプルコードまで解説します。
C#を学び始めたばかりの方でも理解しやすいように、ひとつずつ順番に見ていきましょう。
2. C#のif文の基本的な書き方
2-1. if文の基本構文
まずは、if else文の前に、基本となるif文を理解しましょう。
C#のif文は、次のように書きます。
C#if (条件式)
{
条件式がtrueのときに実行する処理
}
ifの後ろに丸括弧()を書き、その中に条件式を指定します。
条件式がtrueであれば、波括弧{}の中の処理が実行されます。条件式がfalseであれば、波括弧の中の処理は実行されません。
具体例を見てみましょう。
C#int age = 20;
if (age >= 20)
{
Console.WriteLine("20歳以上です");
}
この場合、ageは20なので、age >= 20はtrueになります。そのため、画面には次のように表示されます。
C#20歳以上です
2-2. 条件式にはtrueまたはfalseになる式を書く
C#のif文では、条件式には必ずtrueまたはfalseになる式を書きます。
たとえば、次のような式は条件式として使えます。
C#score >= 60
age < 20
name == "田中"
isLoggedIn == true
これらは、判定結果がtrueまたはfalseになります。
一方で、次のような書き方はC#ではエラーになります。
C#int number = 10;
if (number)
{
Console.WriteLine("実行されます");
}
C#では、int型の値をそのまま条件式に使うことはできません。
正しくは、次のように比較式を書きます。
C#int number = 10;
if (number > 0)
{
Console.WriteLine("numberは0より大きいです");
}
C#のif文では、「条件式はbool型になる」と覚えておきましょう。
2-3. if文だけで処理を分岐するサンプルコード
if文だけを使うと、「条件を満たしたときだけ処理する」という書き方ができます。
C#int score = 85;
if (score >= 80)
{
Console.WriteLine("高得点です");
}
Console.WriteLine("処理を終了します");
このコードでは、scoreが80以上の場合だけ「高得点です」と表示されます。
実行結果は次のようになります。
C#高得点です
処理を終了します
もしscoreが50だった場合、if文の中は実行されません。
C#int score = 50;
if (score >= 80)
{
Console.WriteLine("高得点です");
}
Console.WriteLine("処理を終了します");
実行結果は次のようになります。
C#処理を終了します
if文だけの場合、条件を満たさなかったときの専用処理は書かれません。条件を満たさない場合の処理も書きたいときに、elseを使います。
2-4. 波括弧{}を使う理由と省略時の注意点
C#では、if文の中の処理が1行だけの場合、波括弧{}を省略できます。
C#int age = 20;
if (age >= 20)
Console.WriteLine("成人です");
このコードは動作します。
しかし、初心者のうちは波括弧を省略しないことをおすすめします。理由は、意図しないバグにつながりやすいからです。
たとえば、次のコードを見てください。
C#int age = 18;
if (age >= 20)
Console.WriteLine("成人です");
Console.WriteLine("年齢確認が完了しました");
一見すると、2つのConsole.WriteLineがif文の中にあるように見えるかもしれません。
しかし、波括弧を省略した場合、if文の対象になるのは直後の1文だけです。そのため、実際には次のように解釈されます。
C#int age = 18;
if (age >= 20)
{
Console.WriteLine("成人です");
}
Console.WriteLine("年齢確認が完了しました");
この場合、ageが18でも「年齢確認が完了しました」は表示されます。
このようなミスを防ぐために、処理が1行だけでも波括弧を書く習慣をつけると安心です。
3. C#のif else文の書き方
3-1. if else文の基本構文
C#のif else文は、条件が成り立つ場合と成り立たない場合で処理を分ける構文です。
基本構文は次のとおりです。
C#if (条件式)
{
条件式がtrueのときに実行する処理
}
else
{
条件式がfalseのときに実行する処理
}
ifの条件式がtrueであれば、ifブロックの中が実行されます。
ifの条件式がfalseであれば、elseブロックの中が実行されます。
3-2. 条件がtrueのときとfalseのときの処理の流れ
if else文の処理の流れはとてもシンプルです。
まず、ifの条件式を判定します。
条件式がtrueなら、ifの中の処理を実行します。このとき、elseの中の処理は実行されません。
条件式がfalseなら、ifの中の処理は実行されず、elseの中の処理が実行されます。
つまり、ifとelseのどちらか一方だけが実行されます。
C#int number = 7;
if (number % 2 == 0)
{
Console.WriteLine("偶数です");
}
else
{
Console.WriteLine("奇数です");
}
このコードでは、number % 2 == 0が条件式です。
%は余りを求める演算子です。7を2で割った余りは1なので、条件式はfalseになります。そのため、elseの中の処理が実行されます。
C#奇数です
3-3. if else文を使ったサンプルコード
実際に、点数による合格判定をif else文で書いてみましょう。
C#int score = 72;
if (score >= 60)
{
Console.WriteLine("合格です");
}
else
{
Console.WriteLine("不合格です");
}
scoreが60以上であれば「合格です」、そうでなければ「不合格です」と表示されます。
実行結果は次のとおりです。
C#合格です
次に、ログイン状態を判定する例です。
C#bool isLoggedIn = false;
if (isLoggedIn)
{
Console.WriteLine("ログイン済みです");
}
else
{
Console.WriteLine("ログインしてください");
}
isLoggedInはbool型の変数です。値がtrueまたはfalseなので、そのまま条件式として使えます。
この場合、isLoggedInはfalseなので、実行結果は次のようになります。
C#ログインしてください
3-4. elseは条件式を書かない点に注意
elseには条件式を書きません。
次のように書くとエラーになります。
C#int score = 50;
if (score >= 60)
{
Console.WriteLine("合格です");
}
else (score < 60)
{
Console.WriteLine("不合格です");
}
elseは、「それ以外の場合」を表す構文です。そのため、条件式は不要です。
正しくは次のように書きます。
C#int score = 50;
if (score >= 60)
{
Console.WriteLine("合格です");
}
else
{
Console.WriteLine("不合格です");
}
もしelseにも条件を付けたい場合は、else ifを使います。
C#int score = 50;
if (score >= 80)
{
Console.WriteLine("優秀です");
}
else if (score >= 60)
{
Console.WriteLine("合格です");
}
else
{
Console.WriteLine("不合格です");
}
elseは条件を書かず、最後の受け皿として使うと覚えておきましょう。
4. C#のelse if文で複数条件を分岐する方法
4-1. else if文の基本構文
else if文は、複数の条件を順番に判定したいときに使います。
基本構文は次のとおりです。
C#if (条件式1)
{
条件式1がtrueのときの処理
}
else if (条件式2)
{
条件式2がtrueのときの処理
}
else if (条件式3)
{
条件式3がtrueのときの処理
}
else
{
どの条件にも当てはまらないときの処理
}
else ifはいくつでも追加できます。
たとえば、点数によって評価を変えたい場合は、次のように書けます。
C#int score = 75;
if (score >= 90)
{
Console.WriteLine("評価A");
}
else if (score >= 70)
{
Console.WriteLine("評価B");
}
else if (score >= 60)
{
Console.WriteLine("評価C");
}
else
{
Console.WriteLine("評価D");
}
このように、条件が2つ以上ある場合はelse ifを使うと便利です。
4-2. else ifは上から順番に判定される
else if文で重要なのは、条件が上から順番に判定されることです。
そして、一度どれかの条件に当てはまると、それ以降の条件は判定されません。
次のコードを見てください。
C#int score = 85;
if (score >= 60)
{
Console.WriteLine("合格です");
}
else if (score >= 80)
{
Console.WriteLine("高得点です");
}
else
{
Console.WriteLine("不合格です");
}
scoreは85なので、score >= 60もscore >= 80も両方trueです。
しかし、最初のif (score >= 60)がtrueになるため、そこで処理が実行され、後ろのelse if (score >= 80)は判定されません。
実行結果は次のようになります。
C#合格です
「高得点です」と表示したい場合は、条件の順番を変える必要があります。
C#int score = 85;
if (score >= 80)
{
Console.WriteLine("高得点です");
}
else if (score >= 60)
{
Console.WriteLine("合格です");
}
else
{
Console.WriteLine("不合格です");
}
この場合、実行結果は次のようになります。
C#高得点です
else ifでは、より限定的な条件を上に書くことが大切です。
4-3. 点数判定で学ぶelse if文のサンプルコード
点数によって成績を判定するサンプルを見てみましょう。
C#int score = 82;
if (score >= 90)
{
Console.WriteLine("評価はAです");
}
else if (score >= 80)
{
Console.WriteLine("評価はBです");
}
else if (score >= 70)
{
Console.WriteLine("評価はCです");
}
else if (score >= 60)
{
Console.WriteLine("評価はDです");
}
else
{
Console.WriteLine("評価はFです");
}
このコードでは、scoreが82なので、score >= 90はfalseです。
次にscore >= 80が判定され、これはtrueになります。そのため、「評価はBです」と表示されます。
C#評価はBです
このとき、後ろのscore >= 70やscore >= 60は判定されません。
else if文では、最初に当てはまった条件の処理だけが実行されます。
4-4. else ifを複数書くときの注意点
else ifを複数書くときは、条件の順番に注意しましょう。
悪い例を見てみます。
C#int score = 95;
if (score >= 60)
{
Console.WriteLine("D以上です");
}
else if (score >= 70)
{
Console.WriteLine("C以上です");
}
else if (score >= 80)
{
Console.WriteLine("B以上です");
}
else if (score >= 90)
{
Console.WriteLine("Aです");
}
このコードでは、scoreが95でも最初のscore >= 60に当てはまってしまいます。
そのため、後ろのscore >= 70、score >= 80、score >= 90は実行されません。
正しくは、条件を厳しい順に書きます。
C#int score = 95;
if (score >= 90)
{
Console.WriteLine("Aです");
}
else if (score >= 80)
{
Console.WriteLine("Bです");
}
else if (score >= 70)
{
Console.WriteLine("Cです");
}
else if (score >= 60)
{
Console.WriteLine("Dです");
}
else
{
Console.WriteLine("Fです");
}
複数条件を書くときは、「先に判定すべき条件はどれか」を考えることが大切です。
4-5. 最後にelseを書くべきケース
elseは必ず書かなければならないわけではありません。
しかし、どの条件にも当てはまらなかった場合の処理を明確にしたいときは、最後にelseを書くのがおすすめです。
たとえば、点数判定では、60点未満の場合をelseで受け止めるとわかりやすくなります。
C#int score = 45;
if (score >= 90)
{
Console.WriteLine("Aです");
}
else if (score >= 80)
{
Console.WriteLine("Bです");
}
else if (score >= 70)
{
Console.WriteLine("Cです");
}
else if (score >= 60)
{
Console.WriteLine("Dです");
}
else
{
Console.WriteLine("Fです");
}
elseを書くことで、「それ以外の場合に何が起こるのか」が明確になります。
特に、エラー処理や入力チェックでは、最後にelseを書いて想定外の値を処理することがよくあります。
C#string role = "guest";
if (role == "admin")
{
Console.WriteLine("管理者画面を表示します");
}
else if (role == "user")
{
Console.WriteLine("ユーザー画面を表示します");
}
else
{
Console.WriteLine("権限がありません");
}
想定外の値が入る可能性がある場合は、最後にelseを書くと安全です。
5. if else文でよく使う比較演算子と論理演算子
5-1. ==・!=・>・<・>=・<=の使い方
C#のif else文では、条件式を書くために比較演算子をよく使います。
代表的な比較演算子は次のとおりです。
| 演算子 | 意味 | 例 |
|---|---|---|
| == | 等しい | age == 20 |
| != | 等しくない | name != "admin" |
| > | より大きい | score > 80 |
| < | より小さい | age < 18 |
| >= | 以上 | score >= 60 |
| <= | 以下 | price <= 1000 |
サンプルコードを見てみましょう。
C#int age = 20;
if (age == 20)
{
Console.WriteLine("20歳です");
}
if (age != 18)
{
Console.WriteLine("18歳ではありません");
}
if (age >= 20)
{
Console.WriteLine("20歳以上です");
}
比較演算子を使うことで、数値や文字列を判定できます。
文字列を比較する場合は、次のように==を使えます。
C#string name = "admin";
if (name == "admin")
{
Console.WriteLine("管理者です");
}
else
{
Console.WriteLine("管理者ではありません");
}
ただし、文字列比較では大文字・小文字や空白の違いに注意が必要です。
5-2. &&で「かつ」の条件を書く方法
&&は、「かつ」を表す論理演算子です。
複数の条件がすべてtrueの場合に、全体がtrueになります。
たとえば、「年齢が20歳以上、かつ会員である場合」に処理を実行したいときは、次のように書きます。
C#int age = 25;
bool isMember = true;
if (age >= 20 && isMember)
{
Console.WriteLine("成人会員です");
}
else
{
Console.WriteLine("条件を満たしていません");
}
この場合、age >= 20がtrueで、isMemberもtrueなので、全体の条件はtrueになります。
C#成人会員です
&&では、どちらか一方でもfalseであれば、全体はfalseになります。
C#int age = 18;
bool isMember = true;
if (age >= 20 && isMember)
{
Console.WriteLine("成人会員です");
}
else
{
Console.WriteLine("条件を満たしていません");
}
この場合、age >= 20がfalseなので、実行結果は次のようになります。
C#条件を満たしていません
5-3. ||で「または」の条件を書く方法
||は、「または」を表す論理演算子です。
複数の条件のうち、どれか1つでもtrueであれば、全体がtrueになります。
たとえば、「管理者または編集者ならアクセスできる」という処理は次のように書けます。
C#string role = "editor";
if (role == "admin" || role == "editor")
{
Console.WriteLine("編集画面にアクセスできます");
}
else
{
Console.WriteLine("アクセスできません");
}
この場合、role == "admin"はfalseですが、role == "editor"がtrueなので、全体はtrueになります。
実行結果は次のとおりです。
C#編集画面にアクセスできます
||は、複数の許可条件や例外条件を扱うときによく使います。
C#int day = 7;
if (day == 6 || day == 7)
{
Console.WriteLine("休日です");
}
else
{
Console.WriteLine("平日です");
}
この例では、6または7であれば休日と判定しています。
5-4. !で条件を反転する方法
!は、条件を反転する論理演算子です。
trueをfalseに、falseをtrueにします。
たとえば、ログインしていない場合にメッセージを表示したいときは、次のように書けます。
C#bool isLoggedIn = false;
if (!isLoggedIn)
{
Console.WriteLine("ログインしてください");
}
else
{
Console.WriteLine("ログイン済みです");
}
isLoggedInはfalseですが、!isLoggedInと書くことで条件が反転し、trueになります。
そのため、実行結果は次のようになります。
C#ログインしてください
次の2つのコードは似た意味になります。
C#if (isLoggedIn == false)
{
Console.WriteLine("ログインしてください");
}
C#if (!isLoggedIn)
{
Console.WriteLine("ログインしてください");
}
bool型の変数では、!を使うと簡潔に書けます。
5-5. 複数条件を書くときは括弧で優先順位を明確にする
複数の条件を組み合わせる場合は、括弧()を使って優先順位を明確にしましょう。
たとえば、次のような条件を考えます。
「管理者である、または、20歳以上かつ会員である」
この場合、次のように書けます。
C#string role = "user";
int age = 25;
bool isMember = true;
if (role == "admin" || (age >= 20 && isMember))
{
Console.WriteLine("利用できます");
}
else
{
Console.WriteLine("利用できません");
}
括弧を使うことで、age >= 20 && isMemberを先にひとまとまりとして判定していることがわかりやすくなります。
括弧がないと、条件の意味を読み間違えやすくなります。
C#if (role == "admin" || age >= 20 && isMember)
{
Console.WriteLine("利用できます");
}
C#には演算子の優先順位がありますが、初心者のうちは括弧を使って明示したほうが安全です。
条件式が複雑になるほど、括弧を使って読みやすく書くことが大切です。
6. C#のif else文でよくあるエラーと解決方法
6-1. =と==を間違える
初心者がよく間違えるのが、=と==の違いです。
=は代入です。変数に値を入れるときに使います。
C#int number = 10;
==は比較です。左右の値が等しいかどうかを判定するときに使います。
C#if (number == 10)
{
Console.WriteLine("10です");
}
次のように、条件式で=を使うとエラーになります。
C#int number = 10;
if (number = 10)
{
Console.WriteLine("10です");
}
C#では、number = 10は代入であり、結果はbool型ではありません。そのため、if文の条件式として使えません。
正しくは次のように書きます。
C#int number = 10;
if (number == 10)
{
Console.WriteLine("10です");
}
条件式で等しいかどうかを調べるときは、必ず==を使いましょう。
6-2. 条件式にbool以外の値を書いてしまう
C#のif文では、条件式にはbool型の式を書く必要があります。
次のコードはエラーになります。
C#int count = 5;
if (count)
{
Console.WriteLine("countがあります");
}
C#では、数値をそのままif文の条件にすることはできません。
正しくは、次のように比較します。
C#int count = 5;
if (count > 0)
{
Console.WriteLine("countは0より大きいです");
}
文字列でも同じです。
C#string name = "太郎";
if (name)
{
Console.WriteLine("名前があります");
}
このような書き方はできません。
空文字かどうかを判定するなら、次のように書きます。
C#string name = "太郎";
if (name != "")
{
Console.WriteLine("名前があります");
}
または、string.IsNullOrEmptyを使うとより安全です。
C#string name = "太郎";
if (!string.IsNullOrEmpty(name))
{
Console.WriteLine("名前があります");
}
if文の条件式には、必ずtrueまたはfalseになる式を書くことを意識しましょう。
6-3. elseの位置を間違える
elseは、直前のifまたはelse ifとセットで使います。
次のように、関係のない場所にelseを書くとエラーになります。
C#int score = 70;
if (score >= 60)
{
Console.WriteLine("合格です");
}
Console.WriteLine("判定完了");
else
{
Console.WriteLine("不合格です");
}
elseの前に別の文が入っているため、ifとのつながりが切れてしまいます。
正しくは、次のようにifブロックの直後にelseを書きます。
C#int score = 70;
if (score >= 60)
{
Console.WriteLine("合格です");
}
else
{
Console.WriteLine("不合格です");
}
Console.WriteLine("判定完了");
elseは、対応するifの直後に書く必要があります。
6-4. 波括弧{}の閉じ忘れ
if else文でよくあるエラーのひとつが、波括弧{}の閉じ忘れです。
次のコードは、ifブロックの閉じ括弧が足りません。
C#int score = 80;
if (score >= 60)
{
Console.WriteLine("合格です");
else
{
Console.WriteLine("不合格です");
}
正しくは次のように、ifブロックを閉じてからelseを書きます。
C#int score = 80;
if (score >= 60)
{
Console.WriteLine("合格です");
}
else
{
Console.WriteLine("不合格です");
}
波括弧が増えてくると、どこからどこまでがifの処理なのかわかりにくくなることがあります。
Visual StudioやVisual Studio Codeなどのエディタを使うと、自動インデントや括弧の対応表示があるため、閉じ忘れに気づきやすくなります。
6-5. セミコロン;をif文の直後に書いてしまう
if文の直後にセミコロン;を書いてしまうミスにも注意が必要です。
C#int score = 50;
if (score >= 60);
{
Console.WriteLine("合格です");
}
このコードでは、if (score >= 60);のセミコロンによって、if文の処理がそこで終わってしまいます。
そのため、後ろのブロックはif文とは関係なく実行されます。
結果として、scoreが50でも「合格です」と表示されてしまいます。
正しくは、次のようにif文の直後にセミコロンを書きません。
C#int score = 50;
if (score >= 60)
{
Console.WriteLine("合格です");
}
if、else if、elseの直後にはセミコロンを書かない、と覚えておきましょう。
6-6. 文字列比較で大文字・小文字や空白を見落とす
文字列を比較するときは、大文字・小文字や空白に注意が必要です。
次のコードを見てください。
C#string input = "Admin";
if (input == "admin")
{
Console.WriteLine("管理者です");
}
else
{
Console.WriteLine("管理者ではありません");
}
"Admin"と"admin"は、大文字と小文字が違うため、等しくありません。
そのため、実行結果は次のようになります。
C#管理者ではありません
大文字・小文字を区別せずに比較したい場合は、たとえば次のように小文字に変換してから比較できます。
C#string input = "Admin";
if (input.ToLower() == "admin")
{
Console.WriteLine("管理者です");
}
else
{
Console.WriteLine("管理者ではありません");
}
また、入力値の前後に空白が入っている場合も注意が必要です。
C#string input = "admin ";
if (input == "admin")
{
Console.WriteLine("管理者です");
}
else
{
Console.WriteLine("管理者ではありません");
}
"admin "には末尾に空白があるため、"admin"とは一致しません。
前後の空白を取り除きたい場合は、Trim()を使います。
C#string input = "admin ";
if (input.Trim() == "admin")
{
Console.WriteLine("管理者です");
}
else
{
Console.WriteLine("管理者ではありません");
}
ユーザー入力を比較するときは、空白や大文字・小文字の違いを考慮しましょう。
7. if else文を読みやすく書くコツ
7-1. 条件式をシンプルにする
if else文は、条件式が複雑になるほど読みにくくなります。
たとえば、次のようなコードは一目で意味を理解しにくいです。
C#if ((age >= 20 && isMember && point >= 1000) || role == "admin")
{
Console.WriteLine("特典を利用できます");
}
このような場合は、条件の意味を変数に分けると読みやすくなります。
C#bool isAdultMember = age >= 20 && isMember;
bool hasEnoughPoint = point >= 1000;
bool canUseBenefit = (isAdultMember && hasEnoughPoint) || role == "admin";
if (canUseBenefit)
{
Console.WriteLine("特典を利用できます");
}
条件式に名前を付けることで、コードの意図が伝わりやすくなります。
7-2. ネストを深くしすぎない
if文の中にさらにif文を書くことをネストといいます。
ネストは便利ですが、深くなりすぎるとコードが読みにくくなります。
C#if (isLoggedIn)
{
if (isMember)
{
if (age >= 20)
{
Console.WriteLine("利用できます");
}
}
}
このようにifが何重にもなると、条件の全体像がわかりにくくなります。
複数条件をまとめられる場合は、&&を使うとシンプルに書けます。
C#if (isLoggedIn && isMember && age >= 20)
{
Console.WriteLine("利用できます");
}
ネストが深くなってきたら、条件をまとめる、メソッドに分ける、早期returnを使うなどの工夫をしましょう。
7-3. 早期returnで処理を整理する
メソッドの中では、条件を満たさない場合に早めにreturnすることで、ネストを浅くできます。
たとえば、次のようなコードがあります。
C#void ShowPage(bool isLoggedIn)
{
if (isLoggedIn)
{
Console.WriteLine("マイページを表示します");
}
else
{
Console.WriteLine("ログインしてください");
return;
}
}
これを早期returnで書くと、次のようになります。
C#void ShowPage(bool isLoggedIn)
{
if (!isLoggedIn)
{
Console.WriteLine("ログインしてください");
return;
}
Console.WriteLine("マイページを表示します");
}
先に「処理を続けられない条件」を判定してreturnすることで、メインの処理が読みやすくなります。
特に、入力チェックやエラー処理では早期returnが役立ちます。
C#void RegisterUser(string name)
{
if (string.IsNullOrEmpty(name))
{
Console.WriteLine("名前を入力してください");
return;
}
Console.WriteLine(name + "さんを登録しました");
}
正常な処理を下にまっすぐ書けるため、コードの流れがわかりやすくなります。
7-4. 条件の順番を意識する
else ifを使うときは、条件の順番がとても重要です。
たとえば、点数判定では高い点数から順に判定する必要があります。
C#if (score >= 90)
{
Console.WriteLine("A");
}
else if (score >= 80)
{
Console.WriteLine("B");
}
else if (score >= 70)
{
Console.WriteLine("C");
}
else
{
Console.WriteLine("D");
}
範囲の広い条件を先に書くと、後ろの条件が実行されないことがあります。
また、エラー判定では、先に不正な値をチェックすると安全です。
C#if (score < 0 || score > 100)
{
Console.WriteLine("点数が不正です");
}
else if (score >= 80)
{
Console.WriteLine("高得点です");
}
else if (score >= 60)
{
Console.WriteLine("合格です");
}
else
{
Console.WriteLine("不合格です");
}
条件分岐を書くときは、「どの条件を先に判定すべきか」を考えましょう。
7-5. コメントに頼りすぎず変数名で意味を伝える
コメントを書くことは大切ですが、コメントがないと意味がわからないコードは読みにくくなりがちです。
たとえば、次のコードは条件の意味が少しわかりにくいです。
C#// 成人会員でポイントが1000以上なら特典を使える
if (age >= 20 && isMember && point >= 1000)
{
Console.WriteLine("特典を利用できます");
}
変数名を使って意味を表すと、コメントがなくても読みやすくなります。
C#bool isAdult = age >= 20;
bool hasEnoughPoint = point >= 1000;
bool canUseBenefit = isAdult && isMember && hasEnoughPoint;
if (canUseBenefit)
{
Console.WriteLine("特典を利用できます");
}
canUseBenefitという変数名を見るだけで、「特典を利用できる条件」だとわかります。
読みやすいif else文を書くには、条件式そのものをわかりやすくすることが大切です。
8. if else文とswitch文・三項演算子の使い分け
8-1. if else文が向いているケース
if else文は、条件が複雑な場合に向いています。
たとえば、比較演算子や論理演算子を組み合わせるような条件です。
C#if (age >= 20 && isMember)
{
Console.WriteLine("成人会員です");
}
else
{
Console.WriteLine("条件を満たしていません");
}
また、範囲判定にもif else文が向いています。
C#if (score >= 80)
{
Console.WriteLine("高得点です");
}
else if (score >= 60)
{
Console.WriteLine("合格です");
}
else
{
Console.WriteLine("不合格です");
}
「60以上」「20未満」「100以下」のような条件は、if else文で書くと自然です。
8-2. switch文が向いているケース
switch文は、ひとつの値に対して複数の候補を比較する場合に向いています。
たとえば、曜日やメニュー番号、ユーザーの種類などを分岐するときです。
C#int day = 1;
switch (day)
{
case 1:
Console.WriteLine("月曜日です");
break;
case 2:
Console.WriteLine("火曜日です");
break;
case 3:
Console.WriteLine("水曜日です");
break;
default:
Console.WriteLine("その他の曜日です");
break;
}
これをif elseで書くと、次のようになります。
C#if (day == 1)
{
Console.WriteLine("月曜日です");
}
else if (day == 2)
{
Console.WriteLine("火曜日です");
}
else if (day == 3)
{
Console.WriteLine("水曜日です");
}
else
{
Console.WriteLine("その他の曜日です");
}
条件がすべて「同じ変数が何と等しいか」を判定している場合は、switch文のほうが読みやすくなることがあります。
8-3. 三項演算子で短く書けるケース
三項演算子は、簡単なif elseを1行で書ける構文です。
基本構文は次のとおりです。
C#条件式 ? trueの場合の値 : falseの場合の値
たとえば、合格・不合格の文字列を変数に入れる場合、if elseでは次のように書きます。
C#int score = 75;
string result;
if (score >= 60)
{
result = "合格";
}
else
{
result = "不合格";
}
三項演算子を使うと、次のように短く書けます。
C#int score = 75;
string result = score >= 60 ? "合格" : "不合格";
シンプルな条件で、値を代入するだけなら三項演算子が便利です。
ただし、条件が複雑な場合や処理が長い場合は、無理に三項演算子を使わずif else文で書いたほうが読みやすくなります。
8-4. 初心者はまずif else文で書くのがおすすめ
C#初心者は、まずif else文で条件分岐を書くのがおすすめです。
理由は、処理の流れがわかりやすいからです。
C#if (score >= 60)
{
Console.WriteLine("合格です");
}
else
{
Console.WriteLine("不合格です");
}
このように書くと、条件がtrueのとき、falseのとき、それぞれ何が起こるのかがはっきり見えます。
switch文や三項演算子は便利ですが、最初から使い分けようとすると混乱することがあります。
まずはif else文でしっかり書けるようになり、その後で必要に応じてswitch文や三項演算子を覚えるとよいでしょう。
8-5. 可読性を優先して使い分ける
if else文、switch文、三項演算子のどれを使うか迷ったときは、可読性を優先しましょう。
コードは、書く時間よりも読む時間のほうが長くなりやすいです。
複雑な条件ならif else文、同じ値に対する分岐ならswitch文、単純な値の選択なら三項演算子、というように使い分けるとわかりやすくなります。
たとえば、次のような複雑な条件はif else文が向いています。
C#if ((age >= 20 && isMember) || role == "admin")
{
Console.WriteLine("利用できます");
}
else
{
Console.WriteLine("利用できません");
}
一方、次のように単純な代入なら三項演算子でも読みやすいです。
C#string message = isLoggedIn ? "ログイン済みです" : "ログインしてください";
短く書けることよりも、後から読んで理解しやすいことを大切にしましょう。
9. C#のif else文を使った実践サンプル
9-1. 偶数・奇数を判定する
整数が偶数か奇数かを判定するには、余りを求める%演算子を使います。
C#int number = 10;
if (number % 2 == 0)
{
Console.WriteLine("偶数です");
}
else
{
Console.WriteLine("奇数です");
}
number % 2は、numberを2で割った余りを表します。
余りが0なら偶数、そうでなければ奇数です。
実行結果は次のようになります。
C#偶数です
numberを7にすると、次のようになります。
C#int number = 7;
if (number % 2 == 0)
{
Console.WriteLine("偶数です");
}
else
{
Console.WriteLine("奇数です");
}
実行結果は次のとおりです。
C#奇数です
9-2. 年齢によって表示メッセージを変える
年齢によってメッセージを変える例です。
C#int age = 16;
if (age >= 20)
{
Console.WriteLine("成人です");
}
else
{
Console.WriteLine("未成年です");
}
このコードでは、ageが20以上なら「成人です」、そうでなければ「未成年です」と表示します。
さらに細かく分けるなら、else ifを使います。
C#int age = 16;
if (age >= 20)
{
Console.WriteLine("成人です");
}
else if (age >= 13)
{
Console.WriteLine("10代です");
}
else
{
Console.WriteLine("子どもです");
}
実行結果は次のようになります。
C#10代です
年齢判定では、条件の順番が大切です。大きい年齢から順に判定するとわかりやすくなります。
9-3. ログイン判定を行う
ユーザー名とパスワードが正しいかどうかを判定するサンプルです。
C#string userName = "taro";
string password = "1234";
if (userName == "taro" && password == "1234")
{
Console.WriteLine("ログイン成功");
}
else
{
Console.WriteLine("ユーザー名またはパスワードが違います");
}
&&を使って、ユーザー名とパスワードの両方が正しい場合だけログイン成功にしています。
実行結果は次のとおりです。
C#ログイン成功
どちらか一方でも違う場合は、elseの処理が実行されます。
C#string userName = "taro";
string password = "0000";
if (userName == "taro" && password == "1234")
{
Console.WriteLine("ログイン成功");
}
else
{
Console.WriteLine("ユーザー名またはパスワードが違います");
}
実行結果は次のようになります。
C#ユーザー名またはパスワードが違います
実際のアプリケーションでは、パスワードをコードに直接書くことは避けますが、if else文の学習用サンプルとしては理解しやすい例です。
9-4. 入力値が空かどうかを判定する
ユーザーが入力した値が空かどうかを判定するには、string.IsNullOrEmptyが便利です。
C#string input = "";
if (string.IsNullOrEmpty(input))
{
Console.WriteLine("入力してください");
}
else
{
Console.WriteLine("入力内容: " + input);
}
string.IsNullOrEmpty(input)は、inputがnullまたは空文字""の場合にtrueになります。
実行結果は次のようになります。
C#入力してください
空白だけの入力も空として扱いたい場合は、string.IsNullOrWhiteSpaceを使います。
C#string input = " ";
if (string.IsNullOrWhiteSpace(input))
{
Console.WriteLine("入力してください");
}
else
{
Console.WriteLine("入力内容: " + input);
}
string.IsNullOrWhiteSpaceは、空文字だけでなく、スペースやタブだけの文字列もtrueとして判定します。
入力チェックでは、string.IsNullOrWhiteSpaceを使う場面が多いです。
9-5. 複数条件で成績を判定する
最後に、複数条件を使った成績判定のサンプルです。
C#int score = 88;
int attendanceRate = 90;
if (score >= 80 && attendanceRate >= 80)
{
Console.WriteLine("評価Aです");
}
else if (score >= 60 && attendanceRate >= 70)
{
Console.WriteLine("評価Bです");
}
else if (score >= 50)
{
Console.WriteLine("評価Cです");
}
else
{
Console.WriteLine("評価Dです");
}
このコードでは、点数だけでなく出席率も条件に含めています。
score >= 80 && attendanceRate >= 80は、「点数が80以上かつ出席率が80以上」という意味です。
scoreが88、attendanceRateが90なので、実行結果は次のようになります。
C#評価Aです
複数条件を組み合わせると、より実践的な判定ができます。
ただし、条件が複雑になりすぎる場合は、変数に分けると読みやすくなります。
C#int score = 88;
int attendanceRate = 90;
bool hasHighScore = score >= 80;
bool hasGoodAttendance = attendanceRate >= 80;
if (hasHighScore && hasGoodAttendance)
{
Console.WriteLine("評価Aです");
}
else
{
Console.WriteLine("評価Aではありません");
}
条件に名前を付けることで、何を判定しているのかがわかりやすくなります。
10. C#のif else文に関するよくある質問
10-1. if文とif else文の違いは何ですか?
if文は、条件を満たした場合だけ処理を実行します。
C#if (score >= 60)
{
Console.WriteLine("合格です");
}
この場合、scoreが60未満なら何も実行されません。
一方、if else文は、条件を満たした場合と満たさなかった場合の両方の処理を書けます。
C#if (score >= 60)
{
Console.WriteLine("合格です");
}
else
{
Console.WriteLine("不合格です");
}
条件を満たさない場合にも何か処理したいなら、if else文を使います。
10-2. else ifはいくつまで書けますか?
C#では、else ifを複数書くことができます。
C#if (score >= 90)
{
Console.WriteLine("A");
}
else if (score >= 80)
{
Console.WriteLine("B");
}
else if (score >= 70)
{
Console.WriteLine("C");
}
else if (score >= 60)
{
Console.WriteLine("D");
}
else
{
Console.WriteLine("F");
}
ただし、else ifが多すぎるとコードが読みにくくなります。
条件が多い場合は、switch文を使えないか、条件をメソッドに分けられないかを考えるとよいでしょう。
10-3. elseは必ず書く必要がありますか?
elseは必ず書く必要はありません。
条件を満たしたときだけ処理したい場合は、if文だけで十分です。
C#if (isLoggedIn)
{
Console.WriteLine("ログイン済みです");
}
条件を満たさない場合にも処理が必要なときだけ、elseを書きます。
C#if (isLoggedIn)
{
Console.WriteLine("ログイン済みです");
}
else
{
Console.WriteLine("ログインしてください");
}
ただし、想定外の値を処理したい場合や、条件に当てはまらない場合の動作を明確にしたい場合は、elseを書いたほうが安全です。
10-4. if文の中にif文を書いてもよいですか?
はい、C#ではif文の中にif文を書くことができます。
C#bool isLoggedIn = true;
bool isAdmin = true;
if (isLoggedIn)
{
if (isAdmin)
{
Console.WriteLine("管理者です");
}
}
このような書き方をネストといいます。
ただし、ネストが深くなりすぎると読みにくくなります。
可能であれば、&&を使って条件をまとめることもできます。
C#if (isLoggedIn && isAdmin)
{
Console.WriteLine("管理者です");
}
ネストを使ってはいけないわけではありませんが、読みやすさを意識して書くことが大切です。
10-5. switch文とif else文はどちらを使うべきですか?
条件によって使い分けるのがおすすめです。
範囲判定や複雑な条件には、if else文が向いています。
C#if (score >= 80)
{
Console.WriteLine("高得点です");
}
else if (score >= 60)
{
Console.WriteLine("合格です");
}
else
{
Console.WriteLine("不合格です");
}
一方、ひとつの値に対して複数の候補を比較する場合は、switch文が向いています。
C#string rank = "A";
switch (rank)
{
case "A":
Console.WriteLine("優秀です");
break;
case "B":
Console.WriteLine("良好です");
break;
case "C":
Console.WriteLine("普通です");
break;
default:
Console.WriteLine("不明です");
break;
}
初心者のうちは、まずif else文で書いて問題ありません。コードが長くなってきたら、switch文に置き換えたほうが読みやすいかを考えるとよいでしょう。
まとめ
C#のif else文は、条件によって処理を分けるための基本構文です。
ifは条件がtrueのときに処理を実行し、elseは条件がfalseのときに処理を実行します。複数の条件を判定したい場合は、else ifを使います。
基本構文は次のとおりです。
C#if (条件式)
{
条件式がtrueのときの処理
}
else
{
条件式がfalseのときの処理
}
複数条件を扱う場合は、次のように書きます。
C#if (条件式1)
{
条件式1がtrueのときの処理
}
else if (条件式2)
{
条件式2がtrueのときの処理
}
else
{
どの条件にも当てはまらないときの処理
}
C#のif else文では、条件式には必ずtrueまたはfalseになる式を書きます。比較演算子の==、!=、>、<、>=、<=や、論理演算子の&&、||、!を使うことで、さまざまな条件を表現できます。
また、初心者がつまずきやすいポイントとして、=と==の間違い、elseの位置、波括弧の閉じ忘れ、if文直後のセミコロン、文字列比較の大文字・小文字や空白の違いがあります。
読みやすいコードを書くためには、条件式をシンプルにし、ネストを深くしすぎず、条件の順番を意識することが大切です。複雑な条件は変数に分けると、コードの意味が伝わりやすくなります。
if else文はC#プログラミングの基本であり、実務でも頻繁に使われます。まずはシンプルな条件分岐から練習し、少しずつelse ifや論理演算子を組み合わせた書き方に慣れていきましょう。

