C# else ifの使い方を初心者向けに解説!if文との違い・条件分岐の書き方・よくあるエラーまでわかる完全ガイド

はじめに

C#でプログラムを書くとき、条件によって処理を変えたい場面はとても多くあります。たとえば、「点数が80点以上なら合格」「年齢が20歳以上なら成人」「入力された文字が特定の値なら別の処理をする」といった場面です。

このような条件分岐でよく使われるのがif文です。そして、複数の条件を順番に判定したいときに使うのがelse ifです。

C#のelse ifを使えるようになると、「Aの場合はこの処理」「Bの場合はこの処理」「どれにも当てはまらない場合はこの処理」というように、プログラムの流れを細かく制御できます。

この記事では、C#のelse ifの使い方を初心者向けにわかりやすく解説します。基本構文、if文やelse文との違い、サンプルコード、よくあるエラー、switch文との使い分けまで順番に確認していきましょう。

1. C#のelse ifとは?初心者向けに基本を解説

C#のelse ifは、複数の条件を順番に判定したいときに使う条件分岐の書き方です。

ifだけでは1つの条件を判定できますが、現実のプログラムでは条件が1つだけとは限りません。たとえば、点数によって「優」「良」「可」「不可」を分けたい場合、条件は複数必要になります。

そのようなときにelse ifを使うことで、複数の条件をわかりやすく書くことができます。

1-1. else ifは複数条件を順番に判定するための書き方

else ifは、最初のifの条件が成り立たなかった場合に、次の条件を判定するための書き方です。

たとえば、次のような考え方になります。

C#
if (条件1)
{
条件1がtrueのときの処理
}
else if (条件2)
{
条件1がfalseで、条件2がtrueのときの処理
}
else if (条件3)
{
条件1と条件2がfalseで、条件3がtrueのときの処理
}
else
{
どの条件にも当てはまらないときの処理
}

ポイントは、上から順番に条件が判定されることです。

最初に条件が一致したブロックだけが実行され、それ以降のelse ifelseは実行されません。

1-2. if文・else文・else if文の役割の違い

C#の条件分岐では、主にifelse ifelseを使います。それぞれの役割は次のとおりです。

ifは、最初に条件を判定するために使います。

C#
if (score >= 80)
{
Console.WriteLine("合格です");
}

else ifは、前の条件に当てはまらなかった場合に、別の条件を追加で判定するために使います。

C#
if (score >= 80)
{
Console.WriteLine("優");
}
else if (score >= 60)
{
Console.WriteLine("良");
}

elseは、どの条件にも当てはまらなかった場合の処理を書くために使います。

C#
if (score >= 80)
{
Console.WriteLine("優");
}
else if (score >= 60)
{
Console.WriteLine("良");
}
else
{
Console.WriteLine("再試験");
}

つまり、ifは最初の条件、else ifは追加の条件、elseは最後の受け皿と考えると理解しやすくなります。

1-3. else ifが必要になる具体的な場面

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 (age < 13)
{
Console.WriteLine("子ども料金です");
}
else if (age < 65)
{
Console.WriteLine("通常料金です");
}
else
{
Console.WriteLine("シニア料金です");
}

このように、条件ごとに異なる処理をしたいとき、else ifはとても便利です。

1-4. 条件分岐を学ぶうえで押さえるべき考え方

条件分岐を学ぶうえで大切なのは、「どの条件がtrueになるのか」を順番に考えることです。

C#のelse ifでは、条件は上から順番に判定されます。そのため、条件の順番がとても重要です。

たとえば、点数が85点の場合、次のコードでは最初の条件に一致します。

C#
int score = 85;

if (score >= 80)
{
Console.WriteLine("80点以上です");
}
else if (score >= 60)
{
Console.WriteLine("60点以上です");
}

85は80以上なので、最初のifが実行されます。次のelse ifの条件であるscore >= 60も本来はtrueですが、すでに最初の条件に一致しているため実行されません。

この「最初に一致した条件だけが実行される」という仕組みを理解することが、else ifを使いこなすうえで重要です。

2. C#のelse ifの基本構文と書き方

ここからは、C#のelse ifの基本構文を具体的に見ていきましょう。

else ifは単独では使えません。必ず最初にifがあり、その後にelse ifを書きます。必要であれば最後にelseを書くこともできます。

2-1. else if文の基本構文

C#のelse ifの基本構文は次のとおりです。

C#
if (条件式1)
{
条件式1がtrueのときの処理
}
else if (条件式2)
{
条件式2がtrueのときの処理
}

else ifの後ろには、ifと同じように条件式を書きます。

C#
else if (score >= 70)

この条件式がtrueであれば、その中の処理が実行されます。falseであれば、次のelse ifまたはelseへ進みます。

2-2. if・else if・elseを組み合わせた基本形

実際のプログラムでは、ifelse ifelseを組み合わせて使うことが多いです。

C#
int score = 75;

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

このコードでは、scoreの値が75なので、次のように判定されます。

まず、score >= 90はfalseです。次に、score >= 80もfalseです。次に、score >= 70はtrueなので、C評価が表示されます。

一度C評価の処理が実行されると、その後のelseは実行されません。

2-3. 条件式に使う比較演算子

else ifの条件式では、比較演算子をよく使います。

比較演算子とは、値を比較してtrueまたはfalseを返す演算子です。

代表的な比較演算子には次のようなものがあります。

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

Console.WriteLine(a == b); // 等しい
Console.WriteLine(a != b); // 等しくない
Console.WriteLine(a > b); // より大きい
Console.WriteLine(a < b); // より小さい
Console.WriteLine(a >= b); // 以上
Console.WriteLine(a <= b); // 以下

else ifでは、たとえば次のように使います。

C#
int temperature = 30;

if (temperature >= 35)
{
Console.WriteLine("猛暑日です");
}
else if (temperature >= 30)
{
Console.WriteLine("真夏日です");
}
else if (temperature >= 25)
{
Console.WriteLine("夏日です");
}
else
{
Console.WriteLine("過ごしやすい気温です");
}

比較演算子を使うことで、数値の大小や一致を判定できます。

2-4. 条件式に使う論理演算子

複数の条件を組み合わせたい場合は、論理演算子を使います。

C#でよく使う論理演算子は次の3つです。

C#
&& // かつ
|| // または
! // ではない

たとえば、点数が80点以上かつ出席率が90%以上の場合に合格とするなら、次のように書けます。

C#
int score = 85;
int attendance = 95;

if (score >= 80 && attendance >= 90)
{
Console.WriteLine("合格です");
}
else
{
Console.WriteLine("不合格です");
}

&&は両方の条件がtrueの場合だけtrueになります。

一方、||はどちらか一方がtrueであればtrueになります。

C#
bool hasTicket = true;
bool isMember = false;

if (hasTicket || isMember)
{
Console.WriteLine("入場できます");
}
else
{
Console.WriteLine("入場できません");
}

!は条件を反転させます。

C#
bool isLoggedIn = false;

if (!isLoggedIn)
{
Console.WriteLine("ログインしてください");
}

else ifでも、これらの論理演算子を使って複雑な条件を表現できます。

2-5. 波かっこ{}の書き方と省略時の注意点

C#では、ifelse ifの処理が1行だけの場合、波かっこ{}を省略できます。

C#
if (score >= 80)
Console.WriteLine("合格です");
else
Console.WriteLine("不合格です");

ただし、初心者のうちは波かっこを省略しないことをおすすめします。

理由は、処理を追加したときに意図しない動きになることがあるからです。

C#
if (score >= 80)
Console.WriteLine("合格です");
Console.WriteLine("おめでとうございます");

このコードでは、見た目では2行ともifの中に見えるかもしれません。しかし、実際にifの対象になるのは直後の1行だけです。

つまり、次のように解釈されます。

C#
if (score >= 80)
{
Console.WriteLine("合格です");
}

Console.WriteLine("おめでとうございます");

そのため、条件に関係なく「おめでとうございます」が表示されてしまいます。

ミスを防ぐためにも、基本的には波かっこを付けて書きましょう。

3. C#のelse ifを使ったサンプルコード

ここでは、C#のelse ifを使った具体的なサンプルコードを紹介します。

実際にコードを読みながら、「どの条件がtrueになるのか」「どの処理が実行されるのか」を確認していきましょう。

3-1. 点数によって成績を判定する例

まずは、点数によって成績を判定する例です。

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("不合格です");
}

この例では、scoreが82です。

最初のscore >= 90はfalseです。次のscore >= 80はtrueなので、「成績はBです」と表示されます。

このように、点数のような数値範囲を判定する場合、else ifはとてもよく使われます。

3-2. 年齢によって表示メッセージを変える例

次は、年齢によって表示メッセージを変える例です。

C#
int age = 18;

if (age < 13)
{
Console.WriteLine("子どもです");
}
else if (age < 20)
{
Console.WriteLine("未成年です");
}
else if (age < 65)
{
Console.WriteLine("成人です");
}
else
{
Console.WriteLine("シニアです");
}

このコードでは、ageが18なので、age < 13はfalse、age < 20はtrueになります。

そのため、「未成年です」と表示されます。

このように、年齢や料金区分など、範囲によって分類したい場合にもelse ifは便利です。

3-3. 入力された数値の範囲を判定する例

ユーザーが入力した数値を判定する例も見てみましょう。

C#
Console.WriteLine("数値を入力してください");
int number = int.Parse(Console.ReadLine());

if (number < 0)
{
Console.WriteLine("負の数です");
}
else if (number == 0)
{
Console.WriteLine("0です");
}
else if (number <= 100)
{
Console.WriteLine("1以上100以下の数です");
}
else
{
Console.WriteLine("100より大きい数です");
}

このコードでは、入力された数値がどの範囲にあるかを判定しています。

ただし、int.Parseは数値に変換できない文字列が入力されるとエラーになります。実際のアプリケーションでは、int.TryParseを使うとより安全です。

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

if (int.TryParse(input, out int number))
{
if (number < 0)
{
Console.WriteLine("負の数です");
}
else if (number == 0)
{
Console.WriteLine("0です");
}
else if (number <= 100)
{
Console.WriteLine("1以上100以下の数です");
}
else
{
Console.WriteLine("100より大きい数です");
}
}
else
{
Console.WriteLine("数値を入力してください");
}

TryParseを使うと、変換に成功した場合だけ数値判定を行えるため、初心者にもおすすめです。

3-4. 文字列の値によって処理を分ける例

else ifは数値だけでなく、文字列の判定にも使えます。

C#
string command = "start";

if (command == "start")
{
Console.WriteLine("処理を開始します");
}
else if (command == "stop")
{
Console.WriteLine("処理を停止します");
}
else if (command == "pause")
{
Console.WriteLine("処理を一時停止します");
}
else
{
Console.WriteLine("不明なコマンドです");
}

文字列を比較するときは、==を使えます。

ただし、大文字と小文字は区別されます。たとえば、"start""Start"は別の文字列として扱われます。

大文字小文字を区別せずに比較したい場合は、次のように書けます。

C#
string command = "Start";

if (command.Equals("start", StringComparison.OrdinalIgnoreCase))
{
Console.WriteLine("処理を開始します");
}
else if (command.Equals("stop", StringComparison.OrdinalIgnoreCase))
{
Console.WriteLine("処理を停止します");
}
else
{
Console.WriteLine("不明なコマンドです");
}

文字列を条件にした分岐は、メニュー選択やコマンド処理などでよく使われます。

3-5. 複数条件を組み合わせた実践的な例

最後に、複数条件を組み合わせた少し実践的な例を見てみましょう。

C#
int score = 85;
int attendance = 92;

if (score >= 80 && attendance >= 90)
{
Console.WriteLine("優秀な成績で合格です");
}
else if (score >= 60 && attendance >= 80)
{
Console.WriteLine("合格です");
}
else if (score >= 60 && attendance < 80)
{
Console.WriteLine("出席率不足です");
}
else
{
Console.WriteLine("不合格です");
}

この例では、点数と出席率の2つの条件を使っています。

score >= 80 && attendance >= 90のように書くことで、「点数が80点以上かつ出席率が90%以上」という条件を表現できます。

実際のプログラムでは、1つの値だけでなく複数の値を組み合わせて判定することがよくあります。

4. if文・else if文・else文の違い

C#の条件分岐では、ifelse ifelseの違いを正しく理解することが大切です。

これらは似ていますが、役割が異なります。違いを理解しておくと、条件分岐のコードを読みやすく、正しく書けるようになります。

4-1. if文だけを使う場合との違い

if文だけを使う場合、それぞれの条件が独立して判定されます。

C#
int score = 85;

if (score >= 80)
{
Console.WriteLine("80点以上です");
}

if (score >= 60)
{
Console.WriteLine("60点以上です");
}

このコードでは、scoreが85なので、どちらの条件もtrueになります。そのため、両方のメッセージが表示されます。

一方、else ifを使うと、最初に一致した条件だけが実行されます。

C#
int score = 85;

if (score >= 80)
{
Console.WriteLine("80点以上です");
}
else if (score >= 60)
{
Console.WriteLine("60点以上です");
}

この場合、score >= 80がtrueなので、else ifの条件は判定されません。

つまり、複数の条件のうちどれか1つだけ実行したい場合は、else ifを使います。

4-2. else ifとelseの違い

else ifelseの違いは、条件式があるかどうかです。

else ifには条件式があります。

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

一方、elseには条件式を書きません。

C#
else
{
Console.WriteLine("不合格です");
}

elseは、上に書かれたifelse ifのどの条件にも当てはまらなかった場合に実行されます。

たとえば、次のコードでは、点数が60未満の場合にelseが実行されます。

C#
int score = 45;

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

elseは「その他の場合」をまとめて処理するためのものです。

4-3. if文を複数並べる書き方との違い

if文を複数並べる書き方と、else ifを使う書き方は、動作が異なります。

次のコードを見てください。

C#
int number = 10;

if (number > 0)
{
Console.WriteLine("正の数です");
}

if (number % 2 == 0)
{
Console.WriteLine("偶数です");
}

この場合、numberは10なので、「正の数です」と「偶数です」の両方が表示されます。

これは、2つのifが独立しているからです。

一方、次のようにelse ifを使うと、どれか1つだけが実行されます。

C#
int number = 10;

if (number > 0)
{
Console.WriteLine("正の数です");
}
else if (number % 2 == 0)
{
Console.WriteLine("偶数です");
}

この場合、最初のnumber > 0がtrueなので、number % 2 == 0は判定されません。

そのため、「偶数です」は表示されません。

複数の条件をすべて確認したい場合はifを複数使い、どれか1つだけ実行したい場合はelse ifを使う、と覚えておきましょう。

4-4. else ifが上から順番に判定される仕組み

else ifは、上から順番に判定されます。

C#
int score = 95;

if (score >= 60)
{
Console.WriteLine("合格です");
}
else if (score >= 80)
{
Console.WriteLine("良い成績です");
}
else if (score >= 90)
{
Console.WriteLine("優秀です");
}

このコードでは、scoreは95です。本来なら「優秀です」と表示したいかもしれません。

しかし、最初のscore >= 60がtrueになるため、「合格です」と表示されます。その後のelse ifは実行されません。

このようなミスを防ぐには、条件の順番を正しく並べる必要があります。

C#
int score = 95;

if (score >= 90)
{
Console.WriteLine("優秀です");
}
else if (score >= 80)
{
Console.WriteLine("良い成績です");
}
else if (score >= 60)
{
Console.WriteLine("合格です");
}

範囲が広い条件よりも、範囲が狭い条件を先に書くのが基本です。

4-5. 条件に一致した後の処理の流れ

else ifでは、条件に一致したブロックが実行されると、その条件分岐全体を抜けます。

C#
int value = 2;

if (value == 1)
{
Console.WriteLine("1です");
}
else if (value == 2)
{
Console.WriteLine("2です");
}
else if (value == 3)
{
Console.WriteLine("3です");
}
else
{
Console.WriteLine("それ以外です");
}

Console.WriteLine("判定が終了しました");

この場合、value == 2がtrueなので、「2です」と表示されます。

その後、次のelse if (value == 3)elseは実行されず、条件分岐の外にある「判定が終了しました」が表示されます。

つまり、else ifは「複数の候補の中から1つを選ぶ」ための書き方です。

5. C#のelse ifを書くときの注意点

else ifは便利ですが、書き方を間違えると意図しない結果になることがあります。

特に初心者がつまずきやすいのは、条件の順番、条件範囲の重複、波かっこのミス、条件式の複雑化です。

ここでは、C#のelse ifを書くときの注意点を確認しましょう。

5-1. 条件の順番を間違えると意図しない結果になる

else ifは上から順番に判定されるため、条件の順番が重要です。

悪い例を見てみましょう。

C#
int score = 95;

if (score >= 60)
{
Console.WriteLine("合格です");
}
else if (score >= 80)
{
Console.WriteLine("良い成績です");
}
else if (score >= 90)
{
Console.WriteLine("優秀です");
}

このコードでは、95点でも最初のscore >= 60に一致してしまいます。そのため、「合格です」と表示されます。

正しくは、より厳しい条件を先に書きます。

C#
int score = 95;

if (score >= 90)
{
Console.WriteLine("優秀です");
}
else if (score >= 80)
{
Console.WriteLine("良い成績です");
}
else if (score >= 60)
{
Console.WriteLine("合格です");
}
else
{
Console.WriteLine("不合格です");
}

範囲判定では、条件の順番を必ず確認しましょう。

5-2. 条件範囲の重複に注意する

条件範囲が重複していると、思ったような処理にならないことがあります。

C#
int age = 20;

if (age >= 18)
{
Console.WriteLine("18歳以上です");
}
else if (age >= 20)
{
Console.WriteLine("20歳以上です");
}

20歳は18歳以上でもあるため、最初の条件に一致します。その結果、age >= 20の条件は実行されません。

この場合は、目的に合わせて順番を変える必要があります。

C#
int age = 20;

if (age >= 20)
{
Console.WriteLine("20歳以上です");
}
else if (age >= 18)
{
Console.WriteLine("18歳以上です");
}

または、条件範囲を明確に書く方法もあります。

C#
int age = 20;

if (age >= 18 && age < 20)
{
Console.WriteLine("18歳以上20歳未満です");
}
else if (age >= 20)
{
Console.WriteLine("20歳以上です");
}

条件が重なっていないかを確認することが大切です。

5-3. どの条件にも当てはまらない場合はelseで処理する

elseは必須ではありませんが、どの条件にも当てはまらない場合の処理を書いておくと安心です。

C#
int score = 50;

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

このコードでは、scoreが50の場合、どの条件にも当てはまらないため何も表示されません。

意図的に何もしないのであれば問題ありませんが、初心者のうちはelseを書いておくと処理漏れに気づきやすくなります。

C#
int score = 50;

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

elseは、想定外の値に対応するためにも役立ちます。

5-4. 条件式を複雑にしすぎない

条件式が長くなりすぎると、コードが読みにくくなります。

C#
if ((score >= 80 && attendance >= 90) || (score >= 90 && reportSubmitted == true) || (isSpecialCase == true && teacherApproved == true))
{
Console.WriteLine("合格です");
}

このような条件式は、一目で意味を理解しにくくなります。

読みやすくするには、条件を変数に分ける方法があります。

C#
bool hasGoodScoreAndAttendance = score >= 80 && attendance >= 90;
bool hasExcellentScoreAndReport = score >= 90 && reportSubmitted;
bool isApprovedSpecialCase = isSpecialCase && teacherApproved;

if (hasGoodScoreAndAttendance || hasExcellentScoreAndReport || isApprovedSpecialCase)
{
Console.WriteLine("合格です");
}

条件式に意味のある名前を付けることで、コードの意図がわかりやすくなります。

5-5. 可読性を高めるインデントと改行の書き方

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>=90){Console.WriteLine("A評価");}else if(score>=80){Console.WriteLine("B評価");}else{Console.WriteLine("D評価");}

プログラムは動けばよいというものではありません。あとから自分や他の人が読むことを考えると、見やすい書き方が重要です。

基本的には、条件ごとに改行し、処理の中身はインデントして書きましょう。

6. C#のelse ifでよくあるエラーと解決方法

C#のelse ifを書いていると、初心者がよく遭遇するエラーがあります。

ここでは、代表的なエラーとその解決方法を紹介します。

6-1. else ifの前にifがなくてエラーになる

else ifは、必ずifの後に書く必要があります。

次のコードはエラーになります。

C#
else if (score >= 80)
{
Console.WriteLine("合格です");
}

else ifは単独では使えません。最初にifが必要です。

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

C#
if (score >= 90)
{
Console.WriteLine("優秀です");
}
else if (score >= 80)
{
Console.WriteLine("合格です");
}

else ifは「前のifがfalseだった場合に、次の条件を判定する」ためのものです。

6-2. else ifの条件式にセミコロンを付けてしまう

条件式の後ろにセミコロンを付けてしまうミスもよくあります。

C#
if (score >= 80);
{
Console.WriteLine("合格です");
}

このコードでは、ifの直後にセミコロンがあるため、ifの中身が空の処理として扱われます。その結果、波かっこの中の処理は条件に関係なく実行されてしまいます。

正しくは、条件式の後ろにセミコロンを付けません。

C#
if (score >= 80)
{
Console.WriteLine("合格です");
}

ifelse ifelseの直後にはセミコロンを付けないと覚えておきましょう。

6-3. 比較演算子==と代入演算子=を間違える

条件式で値が等しいかを判定するときは、==を使います。

C#
if (number == 10)
{
Console.WriteLine("10です");
}

一方、=は代入に使います。

C#
number = 10;

初心者は、条件式で間違えて=を書いてしまうことがあります。

C#
if (number = 10)
{
Console.WriteLine("10です");
}

C#では、このコードは多くの場合コンパイルエラーになります。number = 10は代入であり、条件式として必要なbool型ではないからです。

正しくは==を使います。

C#
if (number == 10)
{
Console.WriteLine("10です");
}

「比較はイコール2つ、代入はイコール1つ」と覚えておきましょう。

6-4. 波かっこの対応ミスで処理がずれる

波かっこ{}の対応が間違っていると、処理の範囲がずれてしまいます。

C#
if (score >= 80)
{
Console.WriteLine("合格です");
}
else if (score >= 60)
{
Console.WriteLine("再試験です");
}
Console.WriteLine("確認してください");
else
{
Console.WriteLine("不合格です");
}

このようなコードでは、elseの位置が不正になり、エラーになります。

正しくは、else ifの処理をきちんと波かっこでまとめます。

C#
if (score >= 80)
{
Console.WriteLine("合格です");
}
else if (score >= 60)
{
Console.WriteLine("再試験です");
Console.WriteLine("確認してください");
}
else
{
Console.WriteLine("不合格です");
}

波かっこがどこから始まり、どこで終わるのかを意識して書きましょう。

6-5. 条件式の型が合わずにコンパイルエラーになる

C#のifelse ifの条件式には、bool型の値が必要です。

たとえば、次のコードはエラーになります。

C#
int number = 10;

if (number)
{
Console.WriteLine("実行されます");
}

C#では、整数をそのまま条件式として使うことはできません。

正しくは、比較演算子を使ってbool型の結果になるようにします。

C#
int number = 10;

if (number > 0)
{
Console.WriteLine("正の数です");
}

文字列も同じです。

C#
string name = "Taro";

if (name)
{
Console.WriteLine("名前があります");
}

このようには書けません。

正しくは、空文字かどうかを判定します。

C#
string name = "Taro";

if (!string.IsNullOrEmpty(name))
{
Console.WriteLine("名前があります");
}

条件式には、必ずtrueまたはfalseになる式を書く必要があります。

7. else ifとswitch文はどう使い分ける?

C#には、条件分岐を書く方法としてelse if以外にswitch文もあります。

どちらも条件によって処理を分けるための機能ですが、向いている場面が異なります。

7-1. else ifが向いているケース

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評価");
}

また、複数の条件を組み合わせる場合にもelse ifが使いやすいです。

C#
if (score >= 80 && attendance >= 90)
{
Console.WriteLine("合格です");
}
else if (score >= 80 && attendance < 90)
{
Console.WriteLine("出席率が不足しています");
}
else
{
Console.WriteLine("不合格です");
}

範囲判定や複雑な条件式には、else ifが向いています。

7-2. switch文が向いているケース

switch文は、1つの値に対して複数の候補を比較する場合に向いています。

C#
string command = "start";

switch (command)
{
case "start":
Console.WriteLine("開始します");
break;

case "stop":
Console.WriteLine("停止します");
break;

case "pause":
Console.WriteLine("一時停止します");
break;

default:
Console.WriteLine("不明なコマンドです");
break;
}

このように、特定の値に応じて処理を分ける場合は、switch文のほうが見やすくなることがあります。

同じ処理をelse ifで書くと、次のようになります。

C#
if (command == "start")
{
Console.WriteLine("開始します");
}
else if (command == "stop")
{
Console.WriteLine("停止します");
}
else if (command == "pause")
{
Console.WriteLine("一時停止します");
}
else
{
Console.WriteLine("不明なコマンドです");
}

どちらでも書けますが、比較する対象が1つで、値の候補がはっきりしている場合はswitch文が便利です。

7-3. 条件が多い場合の書き分け方

条件が多い場合は、条件の種類によって使い分けるとよいでしょう。

数値の範囲を判定する場合は、else ifが向いています。

C#
if (price >= 10000)
{
Console.WriteLine("高額商品です");
}
else if (price >= 5000)
{
Console.WriteLine("中価格商品です");
}
else
{
Console.WriteLine("低価格商品です");
}

一方、決まった値を比較する場合は、switch文が向いています。

C#
switch (status)
{
case "success":
Console.WriteLine("成功しました");
break;

case "error":
Console.WriteLine("エラーが発生しました");
break;

case "waiting":
Console.WriteLine("待機中です");
break;

default:
Console.WriteLine("不明な状態です");
break;
}

条件が多くなったときは、「範囲や複雑な条件か」「単純な値の比較か」で判断しましょう。

7-4. switch式との違い

C#には、switch文のほかにswitch式という書き方もあります。

switch式は、条件に応じて値を返したいときに便利です。

C#
int score = 85;

string grade = score switch
{
>= 90 => "A評価",
>= 80 => "B評価",
>= 70 => "C評価",
_ => "D評価"
};

Console.WriteLine(grade);

この例では、scoreの値に応じてgradeに文字列を代入しています。

else ifで書くと次のようになります。

C#
int score = 85;
string grade;

if (score >= 90)
{
grade = "A評価";
}
else if (score >= 80)
{
grade = "B評価";
}
else if (score >= 70)
{
grade = "C評価";
}
else
{
grade = "D評価";
}

Console.WriteLine(grade);

switch式は短く書ける反面、初心者には少し読み慣れない場合があります。まずはifelse ifelseを理解してから学ぶとよいでしょう。

7-5. 初心者はどちらから覚えるべきか

初心者は、まずifelse ifelseから覚えるのがおすすめです。

理由は、条件分岐の基本的な考え方を理解しやすいからです。

if文を理解すると、条件式、比較演算子、論理演算子、処理の流れなど、C#プログラミングの基本が身につきます。

その後でswitch文switch式を学ぶと、どの場面で使い分ければよいかが理解しやすくなります。

まずはelse ifを使って、複数条件の分岐を書けるようになりましょう。

8. else ifを使った条件分岐をわかりやすく書くコツ

else ifは簡単に使えますが、条件が増えるとコードが読みにくくなることがあります。

ここでは、C#のelse ifをわかりやすく書くためのコツを紹介します。

8-1. 条件は上から優先順位の高い順に書く

else ifは上から順番に判定されるため、優先順位の高い条件を先に書きます。

たとえば、会員ランクを判定する場合を考えます。

C#
int point = 1200;

if (point >= 1000)
{
Console.WriteLine("ゴールド会員です");
}
else if (point >= 500)
{
Console.WriteLine("シルバー会員です");
}
else
{
Console.WriteLine("通常会員です");
}

このように、条件が厳しいものから順番に書くと正しく判定できます。

逆に、先にpoint >= 500を書いてしまうと、1000ポイント以上の人もシルバー会員として判定されてしまいます。

C#
if (point >= 500)
{
Console.WriteLine("シルバー会員です");
}
else if (point >= 1000)
{
Console.WriteLine("ゴールド会員です");
}

この書き方では、point >= 1000の条件に到達しません。

条件の優先順位を考えて、上から順番に並べましょう。

8-2. 否定条件を多用しすぎない

!を使った否定条件は便利ですが、多用すると読みにくくなります。

C#
if (!isNotMember)
{
Console.WriteLine("会員です");
}

このように、否定が重なると意味を理解しにくくなります。

できるだけ肯定的な条件にすると読みやすくなります。

C#
if (isMember)
{
Console.WriteLine("会員です");
}

else ifでも、否定条件ばかりになると処理の流れが追いにくくなります。

C#
if (!isLoggedIn)
{
Console.WriteLine("ログインしてください");
}
else if (!hasPermission)
{
Console.WriteLine("権限がありません");
}
else
{
Console.WriteLine("操作できます");
}

この程度であれば問題ありませんが、否定条件が何個も続く場合は、条件の名前や処理の分け方を見直しましょう。

8-3. 条件式を変数に分けて読みやすくする

条件式が長くなる場合は、bool型の変数に分けると読みやすくなります。

読みにくい例です。

C#
if (score >= 80 && attendance >= 90 && reportSubmitted && !hasPenalty)
{
Console.WriteLine("合格です");
}

これを次のように分けると、意味がわかりやすくなります。

C#
bool hasEnoughScore = score >= 80;
bool hasEnoughAttendance = attendance >= 90;
bool canPass = hasEnoughScore && hasEnoughAttendance && reportSubmitted && !hasPenalty;

if (canPass)
{
Console.WriteLine("合格です");
}

else ifでも同じです。

C#
bool isExcellent = score >= 90 && attendance >= 95;
bool isPass = score >= 60 && attendance >= 80;

if (isExcellent)
{
Console.WriteLine("優秀な成績で合格です");
}
else if (isPass)
{
Console.WriteLine("合格です");
}
else
{
Console.WriteLine("不合格です");
}

条件に名前を付けることで、コードが文章のように読めるようになります。

8-4. ネストが深くなる場合は処理を分ける

if文の中にさらにif文を書くことをネストといいます。

C#
if (isLoggedIn)
{
if (hasPermission)
{
if (isActive)
{
Console.WriteLine("操作できます");
}
}
}

ネストが深くなると、コードが読みにくくなります。

このような場合は、条件をまとめたり、早めに処理を終了したりする書き方を検討します。

C#
if (!isLoggedIn)
{
Console.WriteLine("ログインしてください");
}
else if (!hasPermission)
{
Console.WriteLine("権限がありません");
}
else if (!isActive)
{
Console.WriteLine("アカウントが有効ではありません");
}
else
{
Console.WriteLine("操作できます");
}

このようにelse ifを使うことで、ネストを浅くできます。

メソッドの中であれば、早期returnを使ってさらに読みやすくできる場合もあります。

C#
if (!isLoggedIn)
{
Console.WriteLine("ログインしてください");
return;
}

if (!hasPermission)
{
Console.WriteLine("権限がありません");
return;
}

Console.WriteLine("操作できます");

ネストが深くなってきたら、コードの構造を見直しましょう。

8-5. コメントを使って判定内容を補足する

条件が少し複雑な場合は、コメントを使って判定内容を補足するとわかりやすくなります。

C#
// 点数と出席率の両方を満たしている場合は合格
if (score >= 60 && attendance >= 80)
{
Console.WriteLine("合格です");
}
else
{
Console.WriteLine("不合格です");
}

ただし、コメントを書きすぎると逆に読みにくくなることもあります。

悪い例です。

C#
// scoreが60以上かどうかを判定する
if (score >= 60)
{
// 合格と表示する
Console.WriteLine("合格です");
}

この程度であれば、コードを見れば意味がわかるためコメントは不要です。

コメントは、「なぜその条件にしているのか」「業務上どのような意味があるのか」を補足するために使うと効果的です。

C#
// 出席率が80%未満の場合は、点数に関係なく再試験対象
if (attendance < 80)
{
Console.WriteLine("再試験対象です");
}
else if (score >= 60)
{
Console.WriteLine("合格です");
}
else
{
Console.WriteLine("不合格です");
}

コメントを適切に使うことで、条件分岐の意図が伝わりやすくなります。

9. C#のelse ifに関するよくある質問

最後に、C#のelse ifについて初心者が疑問に感じやすい点をQ&A形式で解説します。

9-1. else ifはいくつまで書ける?

C#では、else ifを複数書くことができます。

C#
if (value == 1)
{
Console.WriteLine("1です");
}
else if (value == 2)
{
Console.WriteLine("2です");
}
else if (value == 3)
{
Console.WriteLine("3です");
}
else if (value == 4)
{
Console.WriteLine("4です");
}
else
{
Console.WriteLine("それ以外です");
}

ただし、いくつも書きすぎるとコードが読みにくくなります。

条件が多い場合は、switch文や辞書、メソッド分割などを検討するとよいでしょう。

初心者のうちは、まずelse ifで書いてみて、条件が増えて読みにくくなったら別の書き方を考える流れで問題ありません。

9-2. elseは必ず必要?

elseは必須ではありません。

C#
if (score >= 80)
{
Console.WriteLine("合格です");
}
else if (score >= 60)
{
Console.WriteLine("再試験です");
}

このように、elseがなくてもコードは動きます。

ただし、どの条件にも当てはまらなかった場合は何も実行されません。

想定外の値を処理したい場合や、どの条件にも一致しないケースを明確にしたい場合は、elseを書いておくと安心です。

C#
if (score >= 80)
{
Console.WriteLine("合格です");
}
else if (score >= 60)
{
Console.WriteLine("再試験です");
}
else
{
Console.WriteLine("不合格です");
}

9-3. else ifとelseifは違う?

C#では、else ifelseifは違います。

正しい書き方は、elseifの間にスペースを入れたelse ifです。

C#
else if (condition)
{
Console.WriteLine("実行されます");
}

elseifと1語で書くと、C#ではキーワードとして認識されません。

C#
elseif (condition)
{
Console.WriteLine("これはエラーです");
}

他のプログラミング言語ではelseifelifを使うことがありますが、C#ではelse ifと書きます。

9-4. else ifの順番は結果に影響する?

はい、else ifの順番は結果に大きく影響します。

else ifは上から順番に判定され、最初に一致した条件だけが実行されます。

C#
int score = 95;

if (score >= 60)
{
Console.WriteLine("合格です");
}
else if (score >= 90)
{
Console.WriteLine("優秀です");
}

このコードでは、95点でも「合格です」と表示されます。なぜなら、最初のscore >= 60に一致するからです。

正しく「優秀です」と表示したい場合は、条件の順番を変えます。

C#
int score = 95;

if (score >= 90)
{
Console.WriteLine("優秀です");
}
else if (score >= 60)
{
Console.WriteLine("合格です");
}

特に数値の範囲を判定するときは、条件の順番に注意しましょう。

9-5. else ifの中にさらにif文を書いてもよい?

はい、else ifの中にさらにif文を書くことはできます。

C#
int score = 85;
int attendance = 70;

if (score >= 80)
{
if (attendance >= 80)
{
Console.WriteLine("合格です");
}
else
{
Console.WriteLine("出席率が不足しています");
}
}
else if (score >= 60)
{
Console.WriteLine("再試験です");
}
else
{
Console.WriteLine("不合格です");
}

このように、条件の中でさらに細かい条件を判定できます。

ただし、ネストが深くなりすぎると読みにくくなります。場合によっては、論理演算子で条件をまとめたり、メソッドに分けたりするとよいでしょう。

C#
if (score >= 80 && attendance >= 80)
{
Console.WriteLine("合格です");
}
else if (score >= 80 && attendance < 80)
{
Console.WriteLine("出席率が不足しています");
}
else if (score >= 60)
{
Console.WriteLine("再試験です");
}
else
{
Console.WriteLine("不合格です");
}

どちらの書き方が読みやすいかを考えながら使い分けましょう。

まとめ

C#のelse ifは、複数の条件を順番に判定したいときに使う条件分岐の書き方です。

基本形は次のようになります。

C#
if (条件1)
{
条件1がtrueのときの処理
}
else if (条件2)
{
条件2がtrueのときの処理
}
else
{
どの条件にも当てはまらないときの処理
}

ifは最初の条件を判定し、else ifは追加の条件を判定し、elseはどの条件にも当てはまらなかった場合の処理を担当します。

else ifを使うときに特に重要なのは、条件が上から順番に判定されることです。最初に一致した条件だけが実行されるため、条件の順番を間違えると意図しない結果になることがあります。

また、条件式には比較演算子や論理演算子を使えます。数値の範囲判定、文字列の比較、複数条件の組み合わせなど、さまざまな場面で活用できます。

初心者のうちは、波かっこ{}を省略せず、インデントを整えて書くことを意識しましょう。条件が複雑になった場合は、bool型の変数に分けたり、コメントを使ったりすると読みやすくなります。

C#の条件分岐は、プログラミングの基本です。ifelse ifelseの違いをしっかり理解し、実際にコードを書きながら使い方に慣れていきましょう。