C#のelseifは存在しない?else ifの正しい書き方・条件分岐の使い方を初心者向けに解説

はじめに

C#で条件分岐を学んでいると、「複数の条件を判定したいときは elseif と書くのかな?」と疑問に思うことがあります。

結論から言うと、C#に elseif という書き方は存在しません。C#では、else if のように else と if の間に半角スペースを入れて書くのが正しい構文です。

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

この記事では、C#の else if の正しい書き方、elseif と書くとエラーになる理由、よくあるミス、読みやすく書くコツまで初心者向けに解説します。

1. C#にelseifは存在しない?まず結論を確認

1-1. C#では「elseif」ではなく「else if」と書く

C#で複数条件を分岐させる場合は、次のように書きます。

C#
int score = 75;

if (score >= 90)
{
Console.WriteLine("評価はAです");
}
else if (score >= 70)
{
Console.WriteLine("評価はBです");
}
else if (score >= 50)
{
Console.WriteLine("評価はCです");
}
else
{
Console.WriteLine("不合格です");
}

正しいのは else if です。

C#
else if (score >= 70)

間違いは elseif です。

C#
elseif (score >= 70) // C#ではエラー

else if は1つの特別なキーワードではなく、else の後ろに if 文を続けて書いている形です。そのため、C#では elseif を分けて書く必要があります。

1-2. 「elseif」と書くとエラーになる理由

C#には ifelseswitch などの条件分岐に使うキーワードがありますが、elseif というキーワードは定義されていません。

そのため、次のように書くとコンパイルエラーになります。

C#
int number = 10;

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

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

C#
int number = 10;

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

C#では elseif を1つの単語として認識できないため、「その名前は現在のコンテキストに存在しません」のようなエラーや構文エラーが発生します。

1-3. PHP・VB・Pythonなど他言語との違い

elseif と書きたくなる理由のひとつは、他のプログラミング言語では似た書き方が使われるからです。

たとえば、PHPでは elseif が使えます。

PHP
if ($score >= 90) {
echo "A";
} elseif ($score >= 70) {
echo "B";
} else {
echo "C";
}

VB系の言語では ElseIf のように書く場合があります。

VB
If score >= 90 Then
Console.WriteLine("A")
ElseIf score >= 70 Then
Console.WriteLine("B")
Else
Console.WriteLine("C")
End If

Pythonでは elif を使います。

Python
if score >= 90:
print("A")
elif score >= 70:
print("B")
else:
print("C")

一方、C#では必ず else if と書きます。

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

言語によって書き方が少しずつ違うため、C#では elseif ではなく else if と覚えておきましょう。

1-4. 検索ユーザーが混乱しやすいポイント

C#初心者が混乱しやすいポイントは、主に次のようなものです。

elseifelse if のどちらが正しいのか分からない、else if の間にスペースが必要なのか分からない、else ifswitch の使い分けが分からない、else if を複数書いたときにどの条件が実行されるのか分からない、といった点です。

特に、PHPやPythonなどを先に学んだ人は、C#でも elseifelif が使えると思ってしまうことがあります。しかし、C#では次のように覚えるのが大切です。

C#
// C#ではこれが正しい
else if
C#
// C#ではこれは間違い
elseif

2. C#のelse ifの基本構文

2-1. if文の基本形

まずは、C#の if 文の基本形を確認しましょう。

C#
if (条件式)
{
// 条件式がtrueのときに実行される処理
}

例として、年齢が20歳以上かどうかを判定してみます。

C#
int age = 25;

if (age >= 20)
{
Console.WriteLine("成人です");
}

age >= 20true の場合、Console.WriteLine("成人です"); が実行されます。

C#の if 文では、条件式を丸括弧 () で囲む必要があります。また、実行したい処理は波括弧 {} の中に書きます。

2-2. else ifを使った複数条件の書き方

条件が1つだけでなく、複数ある場合に else if を使います。

C#
if (条件1)
{
// 条件1がtrueのとき
}
else if (条件2)
{
// 条件1がfalseで、条件2がtrueのとき
}
else if (条件3)
{
// 条件1と条件2がfalseで、条件3がtrueのとき
}

たとえば、点数によって評価を分ける場合は次のように書けます。

C#
int score = 82;

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

この場合、score は82なので、score >= 90falsescore >= 70true です。そのため、「B評価です」と表示されます。

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

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

C#
int score = 40;

if (score >= 90)
{
Console.WriteLine("A評価です");
}
else if (score >= 70)
{
Console.WriteLine("B評価です");
}
else if (score >= 50)
{
Console.WriteLine("C評価です");
}
else
{
Console.WriteLine("不合格です");
}

この例では、score が40なので、どの条件にも当てはまりません。そのため、最後の else が実行されます。

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

C#
else
{
// どの条件にも当てはまらない場合
}

次のように else に条件を書くことはできません。

C#
else (score < 50) // エラー
{
Console.WriteLine("不合格です");
}

条件を書きたい場合は else if を使います。

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

2-4. else ifを使うときの全体の流れ

else if を使った条件分岐では、条件は上から順番に判定されます。

C#
int score = 75;

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

このコードの流れは次の通りです。

まず、score >= 90 を判定します。75は90以上ではないため false です。次に、score >= 70 を判定します。75は70以上なので true です。この時点で「B」が表示されます。

一度どれかの条件に当てはまると、それ以降の else ifelse は実行されません。

つまり、else if は「上から順番に確認して、最初に当てはまった処理だけを実行する」仕組みです。

3. else ifの具体的な使い方をサンプルコードで解説

3-1. 数値の大小で処理を分ける例

数値の大小を判定する場合、else if はよく使われます。

C#
int number = 0;

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

この例では、number の値によって表示内容を変えています。

number > 0 なら正の数、number < 0 なら負の数、それ以外なら0です。

else は「正の数でも負の数でもない場合」を受け持っているため、結果的に0の場合の処理になります。

3-2. 文字列の値で処理を分ける例

else if は、文字列の値を判定するときにも使えます。

C#
string command = "start";

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

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

C#
command == "start"

ただし、大文字と小文字は区別されます。

C#
string command = "Start";

if (command == "start")
{
Console.WriteLine("開始");
}
else
{
Console.WriteLine("一致しません");
}

この場合、"Start""start" は別の文字列として扱われるため、一致しません。

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

C#
string command = "Start";

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

3-3. bool型の条件で処理を分ける例

bool 型は、true または false を表す型です。

C#
bool isLoggedIn = true;
bool isAdmin = false;

if (isLoggedIn && isAdmin)
{
Console.WriteLine("管理者としてログインしています");
}
else if (isLoggedIn)
{
Console.WriteLine("一般ユーザーとしてログインしています");
}
else
{
Console.WriteLine("ログインしていません");
}

この例では、ログイン状態と管理者権限によって処理を分けています。

isLoggedIn && isAdmin は、「ログインしていて、かつ管理者である」という意味です。

bool型の変数は、それ自体が条件式になります。

C#
if (isLoggedIn)
{
Console.WriteLine("ログイン中です");
}

次のように書くこともできますが、初心者のうちは少し冗長です。

C#
if (isLoggedIn == true)
{
Console.WriteLine("ログイン中です");
}

一般的には、bool型の変数はそのまま条件式に使うことが多いです。

3-4. 複数条件を&&・||で組み合わせる例

C#では、複数の条件を組み合わせるときに &&|| を使います。

&& は「かつ」、|| は「または」を意味します。

C#
int age = 25;
bool hasTicket = true;

if (age >= 18 && hasTicket)
{
Console.WriteLine("入場できます");
}
else if (age < 18)
{
Console.WriteLine("18歳未満は入場できません");
}
else
{
Console.WriteLine("チケットが必要です");
}

この例では、18歳以上で、かつチケットを持っている場合に入場できます。

次は || の例です。

C#
string role = "admin";

if (role == "admin" || role == "manager")
{
Console.WriteLine("管理画面にアクセスできます");
}
else
{
Console.WriteLine("アクセス権限がありません");
}

この場合、role"admin" または "manager" であれば、管理画面にアクセスできます。

複数条件を組み合わせるときは、条件が複雑になりすぎないように注意しましょう。

C#
if ((age >= 18 && hasTicket) || role == "admin")
{
Console.WriteLine("入場できます");
}

このように丸括弧を使うと、条件のまとまりが分かりやすくなります。

3-5. 入力値チェックでelse ifを使う例

else if は、入力値のチェックでもよく使われます。

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

if (string.IsNullOrEmpty(name))
{
Console.WriteLine("名前が入力されていません");
}
else if (name.Length < 2)
{
Console.WriteLine("名前は2文字以上で入力してください");
}
else if (name.Length > 20)
{
Console.WriteLine("名前は20文字以内で入力してください");
}
else
{
Console.WriteLine($"こんにちは、{name}さん");
}

この例では、入力された名前について次の順番でチェックしています。

まず、空文字やnullではないかを確認します。次に、文字数が短すぎないかを確認します。さらに、文字数が長すぎないかを確認します。すべて問題なければ、最後の else で正常な処理を行います。

入力値チェックでは、エラー条件を先に ifelse if で判定し、最後に正常な処理を書くと分かりやすくなります。

4. C#のelse ifでよくあるエラーと対処法

4-1. 「elseif」と続けて書いてしまう

もっとも多いミスは、else ifelseif と続けて書いてしまうことです。

間違いの例です。

C#
int score = 80;

if (score >= 90)
{
Console.WriteLine("A");
}
elseif (score >= 70)
{
Console.WriteLine("B");
}

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

C#
int score = 80;

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

C#では elseif というキーワードはありません。必ず else if と分けて書きましょう。

4-2. 条件式の丸括弧を忘れる

C#の ifelse if では、条件式を丸括弧 () で囲む必要があります。

間違いの例です。

C#
int age = 20;

if age >= 20
{
Console.WriteLine("成人です");
}

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

C#
int age = 20;

if (age >= 20)
{
Console.WriteLine("成人です");
}

else if でも同じです。

C#
else if (age >= 13)
{
Console.WriteLine("中学生以上です");
}

Pythonなどでは丸括弧を省略する書き方が一般的ですが、C#では丸括弧が必要です。

4-3. 波括弧{}の範囲を間違える

波括弧 {} の範囲を間違えると、意図しない処理になったり、エラーになったりします。

間違いの例です。

C#
int score = 80;

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

このコードでは、else if のブロックを閉じる } が不足しています。

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

C#
int score = 80;

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

波括弧は、どこからどこまでが1つの処理ブロックなのかを表します。インデントを整えると、波括弧の対応関係が分かりやすくなります。

4-4. セミコロンを不要な場所に書いてしまう

ifelse if の条件式の直後にセミコロンを書いてしまうミスもあります。

間違いの例です。

C#
int score = 80;

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

このコードでは、if (score >= 70); のセミコロンによって、if 文の処理がそこで終わってしまいます。そのため、波括弧内の処理が条件に関係なく実行される可能性があります。

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

C#
int score = 80;

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

else if でも同じです。

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

このような書き方は避けましょう。

正しくは次の通りです。

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

ifelse ifelse の行の最後には、基本的にセミコロンを書きません。

4-5. 「=」と「==」を間違える

条件式で値が等しいかどうかを比較するときは、== を使います。

間違いの例です。

C#
int number = 10;

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

= は代入を意味します。比較ではありません。

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

C#
int number = 10;

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

文字列を比較するときも同じです。

C#
string command = "start";

if (command == "start")
{
Console.WriteLine("開始します");
}
else if (command == "stop")
{
Console.WriteLine("停止します");
}

C#では、条件式は最終的に bool 型、つまり truefalse になる必要があります。=== の違いは初心者がよく間違えるため、しっかり区別しましょう。

4-6. 条件式がbool型になっていない

C#の ifelse if の条件式は、必ず bool 型でなければなりません。

間違いの例です。

C#
int count = 5;

if (count)
{
Console.WriteLine("データがあります");
}

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

正しくは、比較式にします。

C#
int count = 5;

if (count > 0)
{
Console.WriteLine("データがあります");
}

文字列もそのまま条件式にはできません。

C#
string name = "Taro";

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

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

C#
string name = "Taro";

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

C#の条件式は、必ず true または false になるように書きましょう。

5. else ifを使うときの注意点

5-1. 条件は上から順番に判定される

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

C#
int score = 85;

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

この場合、score は85なので、最初の score >= 80true になります。その時点で処理が実行され、下の else if は判定されません。

たとえ score >= 60true であっても、すでに上の条件に当てはまっているため実行されないのです。

5-2. 条件の順番によって結果が変わる

else if では、条件の順番がとても重要です。

たとえば、次のコードを見てください。

C#
int score = 95;

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

score は95なので、score >= 90 にも当てはまります。しかし、先に score >= 60 が判定されて true になるため、「合格です」と表示されます。

「高得点です」と表示したい場合は、より限定的な条件を先に書きます。

C#
int score = 95;

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

範囲が重なる条件を書く場合は、狭い条件や優先したい条件を上に書くのが基本です。

5-3. 重複する条件を書かない

同じ意味の条件や、すでに上の条件に含まれている条件を書くと、コードが分かりにくくなります。

C#
int age = 25;

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

このコード自体は間違いではありません。ただし、age が25の場合は最初の条件で処理が終わります。else if (age >= 18) は、18歳または19歳のときだけ実行されます。

意図が分かりやすいように書くなら、次のように範囲を明確にする方法もあります。

C#
int age = 25;

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

ただし、上から順番に判定されることを理解していれば、age < 20 は省略できます。

読み手が誤解しないように、条件の重複や順番には注意しましょう。

5-4. else ifを増やしすぎると読みにくくなる

else if は便利ですが、数が多くなると読みにくくなります。

C#
if (command == "start")
{
Console.WriteLine("開始");
}
else if (command == "stop")
{
Console.WriteLine("停止");
}
else if (command == "pause")
{
Console.WriteLine("一時停止");
}
else if (command == "restart")
{
Console.WriteLine("再起動");
}
else if (command == "status")
{
Console.WriteLine("状態確認");
}
else
{
Console.WriteLine("不明なコマンド");
}

この程度ならまだ読めますが、条件がさらに増えると管理しにくくなります。

同じ変数の値によって処理を分けている場合は、switch 文や switch 式を使ったほうが読みやすいことがあります。

C#
switch (command)
{
case "start":
Console.WriteLine("開始");
break;
case "stop":
Console.WriteLine("停止");
break;
case "pause":
Console.WriteLine("一時停止");
break;
default:
Console.WriteLine("不明なコマンド");
break;
}

条件分岐が多くなってきたら、else if のままでよいか見直しましょう。

5-5. 最後にelseを書くべきケースと不要なケース

else は必ず必要ではありません。

たとえば、特定の条件に当てはまる場合だけ処理したいなら、else は不要です。

C#
int age = 25;

if (age >= 20)
{
Console.WriteLine("成人向けコンテンツを表示します");
}

一方で、どの条件にも当てはまらなかった場合の処理が必要なら、else を書くべきです。

C#
int score = 45;

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

特に、入力値チェックや分類処理では、最後に else を書いて想定外の値を処理すると安全です。

C#
string role = "guest";

if (role == "admin")
{
Console.WriteLine("管理者画面を表示します");
}
else if (role == "user")
{
Console.WriteLine("ユーザー画面を表示します");
}
else
{
Console.WriteLine("権限が不明です");
}

else を書くべきかどうかは、「どの条件にも当てはまらなかった場合に何か処理が必要か」で判断しましょう。

6. else ifを読みやすく書くコツ

6-1. 条件式をシンプルにする

条件式が長すぎると、何を判定しているのか分かりにくくなります。

C#
if (age >= 20 && hasLicense && !isSuspended && country == "JP")
{
Console.WriteLine("運転できます");
}

この程度なら読めますが、さらに条件が増えると理解しづらくなります。

条件に意味のある名前を付けると、読みやすくなります。

C#
bool isAdult = age >= 20;
bool canDrive = hasLicense && !isSuspended;
bool isJapan = country == "JP";

if (isAdult && canDrive && isJapan)
{
Console.WriteLine("運転できます");
}

条件式が複雑になったら、bool型の変数に分けることを検討しましょう。

6-2. ネストを深くしすぎない

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

C#
if (isLoggedIn)
{
if (isAdmin)
{
if (hasPermission)
{
Console.WriteLine("管理画面を表示します");
}
}
}

ネストが深くなると、コードの流れが追いにくくなります。

&& を使って条件をまとめると、シンプルにできます。

C#
if (isLoggedIn && isAdmin && hasPermission)
{
Console.WriteLine("管理画面を表示します");
}

また、条件に当てはまらない場合を先に処理する方法もあります。

C#
if (!isLoggedIn)
{
Console.WriteLine("ログインしてください");
}
else if (!isAdmin)
{
Console.WriteLine("管理者権限がありません");
}
else if (!hasPermission)
{
Console.WriteLine("権限が不足しています");
}
else
{
Console.WriteLine("管理画面を表示します");
}

ネストが深くなってきたら、else if やガード節で整理できないか考えましょう。

6-3. ガード節を使って処理を整理する

ガード節とは、処理を続けられない条件を先に判定して、早めに処理を抜ける書き方です。

たとえば、メソッドの中で入力値をチェックする場合に使えます。

C#
void RegisterUser(string name, int age)
{
if (string.IsNullOrEmpty(name))
{
Console.WriteLine("名前を入力してください");
return;
}

if (age < 0)
{
Console.WriteLine("年齢が正しくありません");
return;
}

if (age < 18)
{
Console.WriteLine("18歳未満は登録できません");
return;
}

Console.WriteLine("登録しました");
}

このように、エラー条件を先に処理して return すると、正常な処理を最後にすっきり書けます。

else if を使うと次のようにも書けます。

C#
void RegisterUser(string name, int age)
{
if (string.IsNullOrEmpty(name))
{
Console.WriteLine("名前を入力してください");
}
else if (age < 0)
{
Console.WriteLine("年齢が正しくありません");
}
else if (age < 18)
{
Console.WriteLine("18歳未満は登録できません");
}
else
{
Console.WriteLine("登録しました");
}
}

どちらも間違いではありません。ただし、条件が多い場合は、ガード節を使ったほうが読みやすくなることがあります。

6-4. 条件の意味が分かる変数名を使う

条件式を読みやすくするには、変数名も重要です。

分かりにくい例です。

C#
bool flag = true;

if (flag)
{
Console.WriteLine("処理を実行します");
}

flag だけでは、何を表しているのか分かりません。

分かりやすい例です。

C#
bool isUserLoggedIn = true;

if (isUserLoggedIn)
{
Console.WriteLine("処理を実行します");
}

条件に使うbool変数は、次のような名前にすると意味が伝わりやすくなります。

C#
bool isActive = true;
bool hasPermission = false;
bool canEdit = true;
bool shouldSendEmail = false;

ishascanshould などから始めると、trueまたはfalseを表す変数だと分かりやすくなります。

6-5. コメントに頼りすぎずコードで意図を伝える

コメントは便利ですが、コメントがないと理解できないコードは読みにくいコードです。

たとえば、次のコードはコメントがないと意味が分かりにくいです。

C#
if (x >= 20 && y == 1)
{
Console.WriteLine("OK");
}

変数名を分かりやすくすると、コメントが少なくても意図が伝わります。

C#
if (age >= 20 && isMember)
{
Console.WriteLine("会員向け成人コンテンツを表示します");
}

さらに条件を変数にすると、より読みやすくなります。

C#
bool canViewMemberContent = age >= 20 && isMember;

if (canViewMemberContent)
{
Console.WriteLine("会員向け成人コンテンツを表示します");
}

コメントを書くこと自体は悪くありません。しかし、まずはコードの名前や構造で意味が伝わるようにすることが大切です。

7. else if以外の条件分岐との使い分け

7-1. switch文を使ったほうがよいケース

同じ変数の値によって処理を分ける場合は、switch 文が向いていることがあります。

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("不明なコマンドです");
}

switch 文で書くと、次のようになります。

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;
}

command の値によって処理を分けていることが分かりやすくなります。

一方、数値の範囲判定や複雑な条件を組み合わせる場合は、else if のほうが自然です。

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

7-2. switch式を使ったほうがよいケース

C#では、値を返す条件分岐として switch 式も使えます。

たとえば、コマンドに応じてメッセージを作る場合です。

C#
string command = "start";

string message = command switch
{
"start" => "開始します",
"stop" => "停止します",
"pause" => "一時停止します",
_ => "不明なコマンドです"
};

Console.WriteLine(message);

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

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

C#
string command = "start";
string message;

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

Console.WriteLine(message);

このように、単純に値を代入するだけなら、switch 式のほうが短く書ける場合があります。

7-3. 三項演算子を使ったほうがよいケース

条件によって値を1つ選ぶだけなら、三項演算子を使うこともできます。

C#
int score = 80;

string result = score >= 60 ? "合格" : "不合格";

Console.WriteLine(result);

これは次の if 文と同じ意味です。

C#
int score = 80;
string result;

if (score >= 60)
{
result = "合格";
}
else
{
result = "不合格";
}

Console.WriteLine(result);

三項演算子は短く書けますが、条件が複雑になると読みにくくなります。

読みにくい例です。

C#
string result = score >= 90 ? "A" : score >= 70 ? "B" : score >= 50 ? "C" : "D";

このような場合は、else if のほうが分かりやすいです。

C#
string result;

if (score >= 90)
{
result = "A";
}
else if (score >= 70)
{
result = "B";
}
else if (score >= 50)
{
result = "C";
}
else
{
result = "D";
}

三項演算子は、シンプルな二択に使うのがおすすめです。

7-4. if・else if・switchの使い分け早見表

書き方向いているケース
if条件が1つだけ20歳以上なら表示する
if / else条件が2択合格か不合格か
else if複数の条件や範囲を判定する点数でA・B・Cを分ける
switch文同じ変数の値で処理を分けるコマンド名で処理を分ける
switch式条件に応じて値を返す値からメッセージを作る
三項演算子短い二択で値を返す合格なら「OK」、不合格なら「NG」

else if は、範囲判定や複数条件の組み合わせに向いています。

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

一方、同じ変数の決まった値を比較するだけなら、switch も検討しましょう。

8. 初心者向け:else ifの理解を深める練習問題

8-1. 点数によって成績を判定する問題

次の条件で、点数から成績を表示するプログラムを作ってみましょう。

90点以上なら「A」、70点以上なら「B」、50点以上なら「C」、50点未満なら「D」と表示します。

考え方としては、点数の高い条件から順番に判定します。

C#
int score = 85;

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

score が85の場合、score >= 90falsescore >= 70true なので、「B」と表示されます。

8-2. 年齢によって料金区分を判定する問題

次は、年齢によって料金区分を分けてみましょう。

6歳未満なら「無料」、6歳以上13歳未満なら「子ども料金」、13歳以上65歳未満なら「通常料金」、65歳以上なら「シニア料金」とします。

C#
int age = 30;

if (age < 6)
{
Console.WriteLine("無料です");
}
else if (age < 13)
{
Console.WriteLine("子ども料金です");
}
else if (age < 65)
{
Console.WriteLine("通常料金です");
}
else
{
Console.WriteLine("シニア料金です");
}

このコードでは、上から順番に判定されます。

age < 6 に当てはまらなかった時点で、年齢は6歳以上と考えられます。そのため、次の条件は age >= 6 && age < 13 と書かなくても、age < 13 だけで意味が通じます。

8-3. 入力された文字列によって処理を分ける問題

ユーザーが入力した文字列によって処理を分ける例です。

start なら開始、stop なら停止、help ならヘルプ表示、それ以外なら不明なコマンドと表示します。

C#
Console.Write("コマンドを入力してください: ");
string command = Console.ReadLine();

if (command == "start")
{
Console.WriteLine("開始します");
}
else if (command == "stop")
{
Console.WriteLine("停止します");
}
else if (command == "help")
{
Console.WriteLine("使い方を表示します");
}
else
{
Console.WriteLine("不明なコマンドです");
}

このように、入力値に応じて処理を切り替える場面でも else if はよく使われます。

実用的にするなら、大文字小文字の違いや空文字も考慮するとよいでしょう。

C#
Console.Write("コマンドを入力してください: ");
string command = Console.ReadLine();

if (string.IsNullOrEmpty(command))
{
Console.WriteLine("コマンドが入力されていません");
}
else if (command.ToLower() == "start")
{
Console.WriteLine("開始します");
}
else if (command.ToLower() == "stop")
{
Console.WriteLine("停止します");
}
else if (command.ToLower() == "help")
{
Console.WriteLine("使い方を表示します");
}
else
{
Console.WriteLine("不明なコマンドです");
}

8-4. 解答例とコードの読み方

最後に、少し実践的な入力チェックの例を見てみましょう。

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

if (string.IsNullOrEmpty(input))
{
Console.WriteLine("点数が入力されていません");
}
else
{
int score = int.Parse(input);

if (score < 0 || score > 100)
{
Console.WriteLine("点数は0〜100の範囲で入力してください");
}
else if (score >= 90)
{
Console.WriteLine("評価はAです");
}
else if (score >= 70)
{
Console.WriteLine("評価はBです");
}
else if (score >= 50)
{
Console.WriteLine("評価はCです");
}
else
{
Console.WriteLine("評価はDです");
}
}

このコードでは、まず入力が空かどうかを確認しています。入力がある場合だけ、文字列を数値に変換しています。

その後、点数が0〜100の範囲に入っているかをチェックします。範囲外ならエラーメッセージを表示します。

点数が正しい範囲内であれば、else if を使って成績を判定します。

ただし、int.Parse は数値に変換できない文字列が入力されるとエラーになります。より安全に書くなら、int.TryParse を使います。

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

if (!int.TryParse(input, out int score))
{
Console.WriteLine("数値を入力してください");
}
else if (score < 0 || score > 100)
{
Console.WriteLine("点数は0〜100の範囲で入力してください");
}
else if (score >= 90)
{
Console.WriteLine("評価はAです");
}
else if (score >= 70)
{
Console.WriteLine("評価はBです");
}
else if (score >= 50)
{
Console.WriteLine("評価はCです");
}
else
{
Console.WriteLine("評価はDです");
}

このように、else if は入力チェックと相性がよく、初心者でも実用的なコードを書きやすい構文です。

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

9-1. C#でelseifと書ける方法はある?

通常のC#では、elseif と書く方法はありません。

C#の正しい構文は else if です。

C#
else if (条件)
{
// 処理
}

elseif はC#のキーワードではないため、次のように書くとエラーになります。

C#
elseif (条件)
{
// エラー
}

C#を書くときは、必ず elseif を分けて書きましょう。

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

文法上は、else if を複数書くことができます。

C#
if (condition1)
{
}
else if (condition2)
{
}
else if (condition3)
{
}
else if (condition4)
{
}
else
{
}

ただし、数が多くなりすぎると読みにくくなります。

目安として、同じ変数の値を何度も比較している場合は、switch 文や switch 式を検討するとよいでしょう。

C#
switch (command)
{
case "start":
Console.WriteLine("開始");
break;
case "stop":
Console.WriteLine("停止");
break;
default:
Console.WriteLine("不明");
break;
}

else if はいくつでも書けるからといって、増やしすぎないことが大切です。

9-3. elseは必ず必要?

else は必ず必要ではありません。

条件に当てはまるときだけ処理したい場合は、if だけで問題ありません。

C#
if (isLoggedIn)
{
Console.WriteLine("マイページを表示します");
}

複数条件でも、最後の else は省略できます。

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

ただし、どの条件にも当てはまらなかった場合の処理が必要なら、else を書きましょう。

C#
if (score >= 90)
{
Console.WriteLine("A");
}
else if (score >= 70)
{
Console.WriteLine("B");
}
else
{
Console.WriteLine("C以下");
}

9-4. else ifとifを連続で書く違いは?

else ifif を連続で書く場合では、判定のされ方が違います。

else if の場合です。

C#
int score = 95;

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

この場合、最初の条件が true なら、次の else if は判定されません。表示されるのは「A」だけです。

一方、if を連続で書く場合です。

C#
int score = 95;

if (score >= 90)
{
Console.WriteLine("A");
}

if (score >= 70)
{
Console.WriteLine("B");
}

この場合、2つの if は別々に判定されます。score が95なら、どちらの条件も true なので、「A」と「B」の両方が表示されます。

どれか1つだけ実行したい場合は else if を使います。複数の条件をそれぞれ独立して判定したい場合は、if を連続で使います。

9-5. else ifとswitchはどちらを使うべき?

範囲判定や複雑な条件を使う場合は、else if が向いています。

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

同じ変数の値を比較するだけなら、switch が向いています。

C#
switch (command)
{
case "start":
Console.WriteLine("開始");
break;
case "stop":
Console.WriteLine("停止");
break;
case "help":
Console.WriteLine("ヘルプ");
break;
default:
Console.WriteLine("不明なコマンド");
break;
}

迷ったときは、次のように考えると分かりやすいです。

点数や年齢のように「範囲」で分けるなら else if、コマンド名や種類のように「決まった値」で分けるなら switch が適しています。

まとめ

C#には elseif というキーワードは存在しません。複数条件を分岐させる場合は、必ず else if と書きます。

C#
if (条件1)
{
// 条件1がtrueの場合
}
else if (条件2)
{
// 条件2がtrueの場合
}
else
{
// どの条件にも当てはまらない場合
}

elseif と続けて書くと、C#ではエラーになります。

C#
elseif (条件) // C#では間違い

正しくは次の形です。

C#
else if (条件) // C#では正しい

else if は、上から順番に条件を判定し、最初に true になったブロックだけを実行します。そのため、条件の順番がとても重要です。

また、else if を使うときは、丸括弧 () の付け忘れ、波括弧 {} の範囲ミス、不要なセミコロン、=== の間違いにも注意しましょう。

条件が少ない場合や範囲判定には else if が便利ですが、同じ変数の値で分岐する場合は switch 文や switch 式のほうが読みやすいこともあります。

C#の条件分岐では、まず ifelse ifelse の基本を正しく理解することが大切です。c# elseif と検索して迷った場合は、「C#では elseif ではなく else if」と覚えておきましょう。