C#のif else文を完全解説|条件分岐の書き方・使い方・エラー回避まで初心者向けにわかる
はじめに
C#でプログラムを書くとき、ほぼ必ず使うのがif else文です。if else文は「条件によって処理を変える」ための基本構文で、C#の条件分岐を理解するうえで欠かせません。
たとえば、次のような処理を作りたい場面でif else文を使います。
C#int score = 80;
if (score >= 60)
{
Console.WriteLine("合格です");
}
else
{
Console.WriteLine("不合格です");
}
このコードでは、scoreが60以上なら「合格です」、そうでなければ「不合格です」と表示されます。
C#のif else文は初心者が最初につまずきやすい部分でもあります。特に、=と==の違い、波括弧{}の書き忘れ、条件式の書き方、else ifの使い方などは、エラーの原因になりやすいポイントです。
この記事では、C#のif else文について、基本構文から実践的な使い方、よくあるエラーの回避方法、見やすく書くコツまで初心者向けにわかりやすく解説します。
1. C#のif else文とは?条件分岐の基本を初心者向けに解説
C#のif else文とは、条件が成り立つかどうかによって実行する処理を分けるための構文です。
プログラムは上から順番に実行されるだけではなく、「この条件ならこの処理」「そうでなければ別の処理」というように、状況に応じて動きを変える必要があります。そのときに使うのがif else文です。
1-1. if else文でできること
if else文を使うと、条件によって処理を分岐できます。
たとえば、次のようなことができます。
C#int age = 20;
if (age >= 18)
{
Console.WriteLine("成人です");
}
else
{
Console.WriteLine("未成年です");
}
この例では、ageが18以上なら「成人です」、18未満なら「未成年です」と表示されます。
このように、if else文を使うことで、プログラムに判断をさせることができます。
1-2. 条件分岐が必要になる場面
条件分岐は、さまざまな場面で使われます。
たとえば、ログイン画面では、入力されたパスワードが正しいかどうかで処理を変えます。
C#string password = "abc123";
if (password == "abc123")
{
Console.WriteLine("ログイン成功");
}
else
{
Console.WriteLine("パスワードが違います");
}
ゲームであれば、HPが0以下になったらゲームオーバーにする処理にも使えます。
C#int hp = 0;
if (hp <= 0)
{
Console.WriteLine("ゲームオーバー");
}
else
{
Console.WriteLine("プレイ継続");
}
このように、C#のif else文は、ユーザー入力、計算結果、状態判定、エラーチェックなど、非常に多くの場面で使われます。
1-3. if・else・else ifの役割の違い
C#の条件分岐では、主にif、else、else ifを使います。それぞれの役割は次のとおりです。
ifは、最初に条件を判定するために使います。
C#if (条件式)
{
条件がtrueのときの処理
}
elseは、ifの条件が成り立たなかった場合の処理を書くために使います。
C#if (条件式)
{
条件がtrueのときの処理
}
else
{
条件がfalseのときの処理
}
else ifは、条件をさらに追加したいときに使います。
C#if (条件式1)
{
条件式1がtrueのときの処理
}
else if (条件式2)
{
条件式2がtrueのときの処理
}
else
{
どの条件にも当てはまらないときの処理
}
つまり、ifは最初の判定、else ifは追加の判定、elseはそれ以外の処理を書くためのものです。
1-4. C#のif else文は「true / false」で処理を分ける
C#のif else文では、条件式の結果が必ずtrueまたはfalseになります。
C#int number = 10;
if (number > 5)
{
Console.WriteLine("5より大きいです");
}
この場合、number > 5は「10は5より大きいか」という条件です。結果はtrueなので、if文の中の処理が実行されます。
反対に、条件が成り立たない場合はfalseになります。
C#int number = 3;
if (number > 5)
{
Console.WriteLine("5より大きいです");
}
else
{
Console.WriteLine("5以下です");
}
この場合、number > 5はfalseなので、elseの中の処理が実行されます。
C#では、if文の条件式にはbool型、つまりtrueまたはfalseになる式を書く必要があります。
2. C#のif文の基本構文と書き方
まずは、もっとも基本となるif文の書き方から確認しましょう。if文だけを使うと、「条件が成り立つときだけ処理を実行する」ことができます。
2-1. if文だけを使う基本形
C#のif文の基本形は次のとおりです。
C#if (条件式)
{
条件式がtrueのときに実行する処理
}
具体例を見てみましょう。
C#int age = 20;
if (age >= 18)
{
Console.WriteLine("18歳以上です");
}
このコードでは、age >= 18がtrueの場合だけ、Console.WriteLine("18歳以上です");が実行されます。
もしageが18未満であれば、if文の中の処理は実行されません。
2-2. 条件式の書き方
if文の条件式には、結果がtrueまたはfalseになる式を書きます。
よく使う条件式の例は次のとおりです。
C#score >= 60
name == "Taro"
age != 0
price < 1000
isLogin == true
たとえば、点数が60点以上かどうかを判定する場合は、次のように書きます。
C#int score = 75;
if (score >= 60)
{
Console.WriteLine("合格です");
}
文字列を比較する場合は、==を使います。
C#string userName = "admin";
if (userName == "admin")
{
Console.WriteLine("管理者です");
}
C#では、==は「等しいかどうか」を調べる演算子です。代入に使う=とは意味が違うため注意しましょう。
2-3. 波括弧{}を使った処理ブロックの書き方
if文では、条件が成り立ったときに実行する処理を波括弧{}で囲みます。
C#if (条件式)
{
処理1;
処理2;
処理3;
}
波括弧で囲まれた部分をブロックと呼びます。
C#int score = 90;
if (score >= 80)
{
Console.WriteLine("高得点です");
Console.WriteLine("よくできました");
}
この場合、score >= 80がtrueなら、2つのConsole.WriteLineが両方実行されます。
処理が1行だけの場合、波括弧を省略することもできます。
C#if (score >= 80)
Console.WriteLine("高得点です");
ただし、初心者のうちは波括弧を省略しない書き方がおすすめです。処理の範囲がわかりやすくなり、ミスを防ぎやすくなります。
2-4. if文の処理が実行される流れ
if文は、次の流れで実行されます。
まず、条件式を判定します。条件式がtrueなら、ifブロックの中の処理を実行します。条件式がfalseなら、ifブロックの中は実行せず、次の処理へ進みます。
C#int number = 8;
if (number > 5)
{
Console.WriteLine("5より大きいです");
}
Console.WriteLine("処理終了");
この場合、number > 5はtrueなので、次のように表示されます。
5より大きいです
処理終了
もしnumberが3なら、if文の中は実行されず、次のようになります。
処理終了
2-5. 初心者向けサンプルコードで確認する
実際に、簡単なサンプルコードでif文を確認しましょう。
C#using System;
class Program
{
static void Main()
{
int temperature = 30;
if (temperature >= 30)
{
Console.WriteLine("今日は暑いです");
}
Console.WriteLine("天気情報を確認しました");
}
}
このコードでは、temperatureが30以上の場合に「今日は暑いです」と表示されます。その後、条件に関係なく「天気情報を確認しました」が表示されます。
実行結果は次のようになります。
今日は暑いです
天気情報を確認しました
if文は、条件が成り立つときだけ処理を実行したい場合に使う基本の構文です。
3. C#のif else文の書き方と使い方
if文だけでは、「条件が成り立たない場合の処理」を書けません。そのようなときに使うのがelseです。
C#のif else文を使うと、条件がtrueの場合とfalseの場合で処理を分けられます。
3-1. if else文の基本構文
if else文の基本構文は次のとおりです。
C#if (条件式)
{
条件式がtrueのときの処理
}
else
{
条件式がfalseのときの処理
}
たとえば、点数が60点以上なら合格、そうでなければ不合格と表示する場合は、次のように書きます。
C#int score = 55;
if (score >= 60)
{
Console.WriteLine("合格です");
}
else
{
Console.WriteLine("不合格です");
}
この場合、score >= 60はfalseなので、elseの中の処理が実行されます。
3-2. 条件がtrueの場合とfalseの場合の処理
if else文では、条件がtrueの場合はifブロック、falseの場合はelseブロックが実行されます。
C#int number = 10;
if (number % 2 == 0)
{
Console.WriteLine("偶数です");
}
else
{
Console.WriteLine("奇数です");
}
number % 2は、数値を2で割った余りを表します。余りが0なら偶数、そうでなければ奇数です。
この例では、10を2で割った余りは0なので、「偶数です」と表示されます。
3-3. 数値を使ったif else文の例
数値の判定では、比較演算子をよく使います。
C#int stock = 5;
if (stock > 0)
{
Console.WriteLine("在庫があります");
}
else
{
Console.WriteLine("在庫がありません");
}
このコードでは、stockが0より大きい場合に「在庫があります」と表示されます。0以下の場合は「在庫がありません」と表示されます。
金額によって送料を変える処理もif else文で書けます。
C#int totalPrice = 3500;
if (totalPrice >= 3000)
{
Console.WriteLine("送料無料です");
}
else
{
Console.WriteLine("送料がかかります");
}
このように、数値の大小を判定する処理は、C#のif else文でよく使われます。
3-4. 文字列を使ったif else文の例
文字列を判定する場合もif else文を使えます。
C#string input = "yes";
if (input == "yes")
{
Console.WriteLine("処理を実行します");
}
else
{
Console.WriteLine("処理をキャンセルします");
}
このコードでは、inputが"yes"と等しければ処理を実行し、それ以外ならキャンセルします。
文字列比較では、大文字と小文字の違いに注意が必要です。C#では、基本的に"yes"と"YES"は別の文字列として扱われます。
C#string input = "YES";
if (input == "yes")
{
Console.WriteLine("yesです");
}
else
{
Console.WriteLine("yesではありません");
}
この場合、inputは"YES"なので、"yes"とは一致しません。
大文字・小文字を区別せず比較したい場合は、次のように書くこともできます。
C#string input = "YES";
if (input.ToLower() == "yes")
{
Console.WriteLine("yesです");
}
else
{
Console.WriteLine("yesではありません");
}
3-5. ユーザー入力を判定するif else文の例
ユーザーが入力した値を判定する処理でも、if else文はよく使われます。
C#using System;
class Program
{
static void Main()
{
Console.WriteLine("パスワードを入力してください");
string password = Console.ReadLine();
if (password == "abc123")
{
Console.WriteLine("ログイン成功");
}
else
{
Console.WriteLine("ログイン失敗");
}
}
}
このコードでは、ユーザーが入力した文字列が"abc123"と一致するかどうかを判定しています。
ユーザー入力を使う場合は、入力された値が想定どおりとは限りません。空文字やnull、余分なスペースなどにも注意すると、より安全なコードになります。
C#string input = Console.ReadLine();
if (input == "start")
{
Console.WriteLine("開始します");
}
else
{
Console.WriteLine("開始しません");
}
C#のif else文を使えば、ユーザーの操作に応じてプログラムの動きを変えられます。
4. C#のelse if文で複数条件を分岐する方法
if else文では、基本的に「条件に合う場合」と「それ以外」の2通りに分岐します。しかし、実際のプログラムでは、3つ以上の条件に分けたい場面も多くあります。
そのようなときに使うのがelse ifです。
4-1. else if文の基本構文
else if文の基本構文は次のとおりです。
C#if (条件式1)
{
条件式1がtrueのときの処理
}
else if (条件式2)
{
条件式2がtrueのときの処理
}
else
{
どの条件にも当てはまらないときの処理
}
たとえば、点数によって評価を変える場合は、次のように書けます。
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("不合格");
}
この場合、scoreは75なので、score >= 70がtrueになり、「評価B」と表示されます。
4-2. else ifは上から順番に判定される
else if文では、条件は上から順番に判定されます。そして、最初にtrueになったブロックだけが実行されます。
C#int score = 95;
if (score >= 60)
{
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 >= 60)
{
Console.WriteLine("合格");
}
else
{
Console.WriteLine("不合格");
}
else ifでは、条件を書く順番がとても重要です。
4-3. 成績判定のサンプルコード
成績判定のサンプルコードを見てみましょう。
C#using System;
class Program
{
static void Main()
{
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("不合格です");
}
}
}
実行結果は次のようになります。
成績はBです
scoreは82なので、score >= 90はfalse、score >= 80はtrueになります。そのため、「成績はBです」が表示されます。
4-4. else ifを複数書くときの注意点
else ifを複数書くときは、条件の順番に注意しましょう。
悪い例です。
C#int score = 85;
if (score >= 60)
{
Console.WriteLine("D以上");
}
else if (score >= 80)
{
Console.WriteLine("B以上");
}
このコードでは、85点でも最初のscore >= 60がtrueになるため、「D以上」と表示されます。
良い例です。
C#int score = 85;
if (score >= 80)
{
Console.WriteLine("B以上");
}
else if (score >= 60)
{
Console.WriteLine("D以上");
}
複数条件を扱うときは、「どの条件が先に判定されるべきか」を考えて書くことが大切です。
4-5. else ifとelseの使い分け
else ifは、追加の条件を判定したいときに使います。
一方、elseは、どの条件にも当てはまらなかった場合の処理を書くために使います。
C#int number = 0;
if (number > 0)
{
Console.WriteLine("正の数です");
}
else if (number < 0)
{
Console.WriteLine("負の数です");
}
else
{
Console.WriteLine("0です");
}
この例では、正の数、負の数、0の3つに分岐しています。
elseは必須ではありませんが、「どれにも当てはまらない場合」を明確にしたいときに書くと、コードの意味がわかりやすくなります。
5. if else文でよく使う比較演算子・論理演算子
C#のif else文では、条件式を書くために比較演算子や論理演算子を使います。これらを理解すると、さまざまな条件分岐を書けるようになります。
5-1. 比較演算子「==」「!=」「>」「<」「>=」「<=」
比較演算子は、値を比較してtrueまたはfalseを返す演算子です。
よく使う比較演算子は次のとおりです。
C#== 等しい
!= 等しくない
> より大きい
< より小さい
>= 以上
<= 以下
使用例です。
C#int a = 10;
int b = 5;
if (a == b)
{
Console.WriteLine("等しいです");
}
if (a != b)
{
Console.WriteLine("等しくありません");
}
if (a > b)
{
Console.WriteLine("aはbより大きいです");
}
比較演算子は、数値だけでなく文字列の比較にも使えます。
C#string name = "Taro";
if (name == "Taro")
{
Console.WriteLine("名前はTaroです");
}
5-2. 「==」と「=」の違い
C#初心者がよく間違えるのが、==と=の違いです。
=は代入です。
C#int number = 10;
これは、numberに10を入れるという意味です。
一方、==は比較です。
C#if (number == 10)
{
Console.WriteLine("numberは10です");
}
これは、numberが10と等しいかどうかを判定しています。
if文の条件式で「等しいかどうか」を調べたい場合は、必ず==を使います。
C#if (number = 10)
{
Console.WriteLine("10です");
}
このように書くとエラーになります。C#のif文では、条件式にtrueまたはfalseになる式を書く必要があるためです。
5-3. AND条件「&&」の使い方
&&は、複数の条件がすべて成り立つ場合にtrueになります。これをAND条件といいます。
C#int age = 25;
bool hasTicket = true;
if (age >= 18 && hasTicket == true)
{
Console.WriteLine("入場できます");
}
else
{
Console.WriteLine("入場できません");
}
この例では、age >= 18とhasTicket == trueの両方がtrueの場合だけ、「入場できます」と表示されます。
bool型の変数は、次のように省略して書くこともできます。
C#if (age >= 18 && hasTicket)
{
Console.WriteLine("入場できます");
}
5-4. OR条件「||」の使い方
||は、複数の条件のうち1つでも成り立てばtrueになります。これをOR条件といいます。
C#bool isAdmin = false;
bool isOwner = true;
if (isAdmin || isOwner)
{
Console.WriteLine("編集できます");
}
else
{
Console.WriteLine("編集できません");
}
この例では、isAdminまたはisOwnerのどちらかがtrueであれば、編集できると判定します。
数値の判定にも使えます。
C#int day = 7;
if (day == 6 || day == 7)
{
Console.WriteLine("週末です");
}
else
{
Console.WriteLine("平日です");
}
5-5. NOT条件「!」の使い方
!は、条件の結果を反転させる演算子です。trueをfalseに、falseをtrueにします。
C#bool isLogin = false;
if (!isLogin)
{
Console.WriteLine("ログインしてください");
}
このコードでは、isLoginがfalseなので、!isLoginはtrueになります。そのため、「ログインしてください」と表示されます。
次のように、文字列が空ではないかを判定する場面でも使われます。
C#string name = "Taro";
if (!string.IsNullOrEmpty(name))
{
Console.WriteLine("名前が入力されています");
}
5-6. 複数条件では括弧()で優先順位を明確にする
複数の条件を組み合わせると、条件式が読みづらくなることがあります。
C#if (age >= 18 && hasTicket || isAdmin)
{
Console.WriteLine("入場できます");
}
このような場合は、括弧()を使って優先順位を明確にすると読みやすくなります。
C#if ((age >= 18 && hasTicket) || isAdmin)
{
Console.WriteLine("入場できます");
}
このコードは、「18歳以上でチケットを持っている、または管理者である場合に入場できる」という意味です。
条件式が複雑になったら、括弧を使って意図を明確にしましょう。
6. C#のif else文でよくあるエラーと回避方法
C#のif else文は基本的な構文ですが、初心者がつまずきやすいエラーも多くあります。ここでは、よくあるミスと回避方法を紹介します。
6-1. 条件式にbool以外を書いてしまう
C#のif文では、条件式にbool型の式を書く必要があります。
次のようなコードはエラーになります。
C#int number = 10;
if (number)
{
Console.WriteLine("実行します");
}
C#では、数値をそのまま条件式に書くことはできません。
正しくは、比較演算子を使ってtrueまたはfalseになる式を書きます。
C#int number = 10;
if (number > 0)
{
Console.WriteLine("0より大きいです");
}
JavaScriptなど一部の言語では数値を条件式に使える場合がありますが、C#では明確にbool型の条件を書く必要があります。
6-2. 「=」と「==」を間違える
代入の=と比較の==を間違えるのは、非常によくあるミスです。
間違った例です。
C#int score = 80;
if (score = 80)
{
Console.WriteLine("80点です");
}
score = 80は代入なので、条件式としては使えません。
正しくは次のように書きます。
C#int score = 80;
if (score == 80)
{
Console.WriteLine("80点です");
}
「等しいかどうか」を判定するときは==を使う、と覚えておきましょう。
6-3. セミコロン「;」をif文の直後に書いてしまう
if文の直後にセミコロン;を書いてしまうと、意図しない動作になることがあります。
悪い例です。
C#int score = 50;
if (score >= 60);
{
Console.WriteLine("合格です");
}
このコードでは、if (score >= 60);でif文が終わってしまいます。その後のブロックは条件に関係なく実行されてしまいます。
正しくは、if文の直後にセミコロンを書きません。
C#int score = 50;
if (score >= 60)
{
Console.WriteLine("合格です");
}
if文、else if文、else文の直後には、基本的にセミコロンを書かないようにしましょう。
6-4. 波括弧{}の閉じ忘れ・対応ミス
波括弧{}の閉じ忘れもよくあるエラーです。
C#if (score >= 60)
{
Console.WriteLine("合格です");
else
{
Console.WriteLine("不合格です");
}
このコードでは、ifブロックの閉じ括弧}が足りません。
正しくは次のように書きます。
C#if (score >= 60)
{
Console.WriteLine("合格です");
}
else
{
Console.WriteLine("不合格です");
}
波括弧は、開始と終了がセットになっていることを意識しましょう。インデントを整えると、対応関係がわかりやすくなります。
6-5. elseの位置が間違っている
elseは、対応するifまたはelse ifの直後に書く必要があります。
悪い例です。
C#if (score >= 60)
{
Console.WriteLine("合格です");
}
Console.WriteLine("判定しました");
else
{
Console.WriteLine("不合格です");
}
ifとelseの間に別の処理を書くと、elseがどのifに対応するのかわからなくなり、エラーになります。
正しくは次のように書きます。
C#if (score >= 60)
{
Console.WriteLine("合格です");
}
else
{
Console.WriteLine("不合格です");
}
Console.WriteLine("判定しました");
elseは、対応するif文のブロックが終わった直後に書きましょう。
6-6. 文字列比較で大文字・小文字の違いに注意する
C#の文字列比較では、大文字と小文字が区別されます。
C#string input = "YES";
if (input == "yes")
{
Console.WriteLine("はい");
}
else
{
Console.WriteLine("いいえ");
}
この場合、"YES"と"yes"は一致しないため、「いいえ」と表示されます。
大文字・小文字を区別したくない場合は、次のように変換して比較できます。
C#string input = "YES";
if (input.ToLower() == "yes")
{
Console.WriteLine("はい");
}
また、空白が含まれる可能性がある場合は、Trim()を使うとよいです。
C#string input = " yes ";
if (input.Trim().ToLower() == "yes")
{
Console.WriteLine("はい");
}
ユーザー入力を判定するときは、大文字・小文字や空白の違いに注意しましょう。
6-7. nullチェックを忘れてエラーになる
文字列やオブジェクトを扱うときは、nullチェックを忘れるとエラーになることがあります。
たとえば、次のコードはnameがnullの場合にエラーになります。
C#string name = null;
if (name.Length > 0)
{
Console.WriteLine("名前があります");
}
nameがnullの状態でLengthを使おうとすると、例外が発生します。
安全に書くなら、先にnullチェックを行います。
C#string name = null;
if (name != null && name.Length > 0)
{
Console.WriteLine("名前があります");
}
else
{
Console.WriteLine("名前がありません");
}
文字列の場合は、string.IsNullOrEmpty()を使うと便利です。
C#string name = null;
if (!string.IsNullOrEmpty(name))
{
Console.WriteLine("名前があります");
}
else
{
Console.WriteLine("名前がありません");
}
nullの可能性がある値を扱うときは、if else文で安全に判定しましょう。
7. if else文を見やすく書くコツ
if else文は便利ですが、条件が増えるとコードが読みにくくなります。ここでは、C#のif else文を見やすく書くためのコツを紹介します。
7-1. ネストを深くしすぎない
if文の中にif文を書くことをネストといいます。
C#if (isLogin)
{
if (isAdmin)
{
if (hasPermission)
{
Console.WriteLine("操作できます");
}
}
}
このようにネストが深くなると、コードが読みづらくなります。
条件をまとめると、すっきり書けます。
C#if (isLogin && isAdmin && hasPermission)
{
Console.WriteLine("操作できます");
}
ネストが深くなりすぎる場合は、条件を整理できないか考えてみましょう。
7-2. 条件式をわかりやすく分ける
条件式が長くなりすぎると、何を判定しているのかわかりにくくなります。
C#if (age >= 18 && hasTicket && !isBlocked && paymentCompleted)
{
Console.WriteLine("入場できます");
}
この程度なら問題ありませんが、さらに複雑になる場合は、条件を分けると読みやすくなります。
C#bool isAdult = age >= 18;
bool canEnter = isAdult && hasTicket && !isBlocked && paymentCompleted;
if (canEnter)
{
Console.WriteLine("入場できます");
}
条件式に名前をつけることで、コードの意図が伝わりやすくなります。
7-3. 早期returnでコードを読みやすくする
メソッドの中で条件に合わない場合は、早めにreturnすることでネストを浅くできます。
悪い例です。
C#void Login(string userName)
{
if (!string.IsNullOrEmpty(userName))
{
Console.WriteLine("ログイン処理を開始します");
}
else
{
Console.WriteLine("ユーザー名が空です");
}
}
早期returnを使うと、次のように書けます。
C#void Login(string userName)
{
if (string.IsNullOrEmpty(userName))
{
Console.WriteLine("ユーザー名が空です");
return;
}
Console.WriteLine("ログイン処理を開始します");
}
先にエラー条件を処理して抜けることで、メインの処理が読みやすくなります。
7-4. 複雑な条件には変数名をつける
複雑な条件式は、そのままif文に書くよりも、bool変数に代入するとわかりやすくなります。
C#if (age >= 20 && memberRank == "Gold" && totalPrice >= 10000)
{
Console.WriteLine("特別割引の対象です");
}
これを次のように書くと、条件の意味が明確になります。
C#bool isAdult = age >= 20;
bool isGoldMember = memberRank == "Gold";
bool isHighValueOrder = totalPrice >= 10000;
if (isAdult && isGoldMember && isHighValueOrder)
{
Console.WriteLine("特別割引の対象です");
}
条件に意味のある名前をつけることで、後から見たときにも理解しやすいコードになります。
7-5. インデントを整えて処理の範囲を明確にする
if else文では、インデントを整えることがとても重要です。
読みづらい例です。
C#if (score >= 60)
{
Console.WriteLine("合格です");
}
else
{
Console.WriteLine("不合格です");
}
読みやすい例です。
C#if (score >= 60)
{
Console.WriteLine("合格です");
}
else
{
Console.WriteLine("不合格です");
}
インデントを整えると、どの処理がどの条件に含まれているのかが一目でわかります。
C#ではインデントが文法上必須ではありませんが、読みやすいコードを書くためには非常に重要です。
8. if else文・switch文・三項演算子の使い分け
C#には、if else文以外にも条件分岐を書く方法があります。代表的なものがswitch文と三項演算子です。
それぞれ得意な場面が違うため、使い分けを理解しておきましょう。
8-1. if else文が向いているケース
if else文は、複雑な条件を扱う場合に向いています。
C#if (age >= 18 && hasTicket)
{
Console.WriteLine("入場できます");
}
else
{
Console.WriteLine("入場できません");
}
数値の範囲を判定したい場合にも、if else文が使いやすいです。
C#if (score >= 90)
{
Console.WriteLine("A");
}
else if (score >= 80)
{
Console.WriteLine("B");
}
else
{
Console.WriteLine("C以下");
}
条件が「以上」「以下」「複数条件の組み合わせ」になる場合は、if else文がわかりやすいです。
8-2. switch文が向いているケース
switch文は、1つの値に対して複数の候補を分岐したい場合に向いています。
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;
}
曜日、メニュー番号、状態コードなど、1つの値によって処理を分ける場合はswitch文が読みやすくなることがあります。
ただし、複雑な条件式を扱う場合は、if else文のほうが向いています。
8-3. 三項演算子が向いているケース
三項演算子は、簡単な条件によって値を切り替える場合に使います。
C#int score = 70;
string result = score >= 60 ? "合格" : "不合格";
Console.WriteLine(result);
これは、次のif else文と同じ意味です。
C#string result;
if (score >= 60)
{
result = "合格";
}
else
{
result = "不合格";
}
三項演算子は短く書けるのがメリットですが、複雑な条件に使うと読みにくくなります。
C#string message = age >= 18 ? "成人" : "未成年";
このようなシンプルな条件なら、三項演算子を使っても読みやすいです。
8-4. 初心者はまずif else文から覚えるべき理由
C#初心者は、まずif else文から覚えるのがおすすめです。
if else文は、条件分岐の考え方を理解しやすく、複雑な条件にも対応できます。また、switch文や三項演算子を学ぶときにも、if else文の理解が土台になります。
最初から短く書くことを意識するよりも、まずはif else文で処理の流れを正しく書けるようになることが大切です。
慣れてきたら、条件の内容に応じてswitch文や三項演算子も使い分けていきましょう。
9. C#のif else文を練習できるサンプル問題
ここでは、C#のif else文を練習できるサンプル問題を紹介します。実際にコードを書いてみることで、条件分岐の理解が深まります。
9-1. 数値が偶数か奇数かを判定する
問題です。変数numberの値が偶数なら「偶数です」、奇数なら「奇数です」と表示してください。
考え方としては、数値を2で割った余りを調べます。余りが0なら偶数、そうでなければ奇数です。
C#int number = 7;
if (number % 2 == 0)
{
Console.WriteLine("偶数です");
}
else
{
Console.WriteLine("奇数です");
}
%は余りを求める演算子です。number % 2 == 0で、2で割り切れるかどうかを判定しています。
9-2. 年齢によって表示メッセージを変える
問題です。年齢が18歳以上なら「成人です」、18歳未満なら「未成年です」と表示してください。
C#int age = 16;
if (age >= 18)
{
Console.WriteLine("成人です");
}
else
{
Console.WriteLine("未成年です");
}
このように、年齢や金額などの数値を比較する処理では、>=や<をよく使います。
9-3. 点数によって成績を判定する
問題です。点数によって成績を次のように判定してください。
90点以上はA、80点以上はB、70点以上はC、60点以上はD、それ未満は不合格とします。
C#int score = 78;
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("不合格");
}
この問題では、条件を上から順番に判定することが重要です。90点以上から順に書くことで、正しく成績を分けられます。
9-4. ログイン可否を判定する
問題です。ユーザー名とパスワードが正しい場合だけ「ログイン成功」、それ以外は「ログイン失敗」と表示してください。
C#string userName = "admin";
string password = "pass123";
if (userName == "admin" && password == "pass123")
{
Console.WriteLine("ログイン成功");
}
else
{
Console.WriteLine("ログイン失敗");
}
この例では、&&を使って、ユーザー名とパスワードの両方が正しい場合だけログイン成功にしています。
どちらか片方だけ正しくても、条件全体はfalseになります。
9-5. 解答例とコードのポイント
ここまでの問題では、C#のif else文でよく使う基本パターンを練習しました。
偶数・奇数の判定では、余りを求める%を使いました。
C#number % 2 == 0
年齢判定では、比較演算子を使いました。
C#age >= 18
成績判定では、else ifを使って複数条件を上から順番に判定しました。
C#if (score >= 90)
{
}
else if (score >= 80)
{
}
ログイン判定では、AND条件&&を使いました。
C#userName == "admin" && password == "pass123"
if else文を練習するときは、「何を条件にするのか」「条件がtrueのとき何をするのか」「falseのとき何をするのか」を分けて考えると理解しやすくなります。
10. C#のif else文に関するよくある質問
最後に、C#のif else文について初心者が疑問に思いやすい点を解説します。
10-1. C#でelseは必ず必要?
C#でelseは必ず必要ではありません。
条件が成り立つ場合だけ処理を実行したいなら、if文だけで問題ありません。
C#int age = 20;
if (age >= 18)
{
Console.WriteLine("成人です");
}
一方で、条件が成り立たない場合にも何か処理をしたいなら、elseを書きます。
C#if (age >= 18)
{
Console.WriteLine("成人です");
}
else
{
Console.WriteLine("未成年です");
}
つまり、elseは「条件に当てはまらない場合の処理が必要なとき」に使います。
10-2. else ifは何個まで書ける?
C#では、else ifを複数書くことができます。
C#if (condition1)
{
}
else if (condition2)
{
}
else if (condition3)
{
}
else
{
}
ただし、else ifが多すぎるとコードが読みにくくなります。条件が非常に多い場合は、switch文を使ったほうが読みやすい場合もあります。
また、条件をメソッドに分けたり、判定用の変数を使ったりすると、コードを整理しやすくなります。
10-3. else ifとelseifはどちらが正しい?
C#では、else ifが正しい書き方です。
C#else if (条件式)
{
処理
}
elseifのように1語で書くとエラーになります。
間違った例です。
C#elseif (score >= 80)
{
Console.WriteLine("B");
}
C#では必ず、elseとifの間にスペースを入れてelse ifと書きましょう。
10-4. if文の中にif文を書いてもよい?
はい、C#ではif文の中にif文を書くことができます。これをネストといいます。
C#bool isLogin = true;
bool isAdmin = true;
if (isLogin)
{
if (isAdmin)
{
Console.WriteLine("管理者としてログインしています");
}
}
ただし、ネストが深くなりすぎるとコードが読みにくくなります。
次のように条件をまとめると、すっきり書けます。
C#if (isLogin && isAdmin)
{
Console.WriteLine("管理者としてログインしています");
}
ネストは便利ですが、必要以上に深くしないことが大切です。
10-5. if else文とswitch文はどちらを使うべき?
条件の内容によって使い分けるのがおすすめです。
複雑な条件や範囲判定には、if else文が向いています。
C#if (score >= 90)
{
Console.WriteLine("A");
}
else if (score >= 80)
{
Console.WriteLine("B");
}
1つの値に対して、決まった候補ごとに処理を分ける場合はswitch文が向いています。
C#switch (command)
{
case "start":
Console.WriteLine("開始します");
break;
case "stop":
Console.WriteLine("停止します");
break;
default:
Console.WriteLine("不明なコマンドです");
break;
}
初心者のうちは、まずif else文で考えると理解しやすいです。そのうえで、同じ値に対する分岐が多い場合はswitch文を検討しましょう。
10-6. 条件式が長くなったときはどうすればよい?
条件式が長くなったときは、無理に1行で書かず、条件を分けたり変数名をつけたりすると読みやすくなります。
読みにくい例です。
C#if (age >= 18 && hasTicket && !isBlocked && paymentCompleted && userRank == "Gold")
{
Console.WriteLine("特別入場できます");
}
読みやすくした例です。
C#bool isAdult = age >= 18;
bool canUseTicket = hasTicket && !isBlocked;
bool isPaid = paymentCompleted;
bool isGoldUser = userRank == "Gold";
if (isAdult && canUseTicket && isPaid && isGoldUser)
{
Console.WriteLine("特別入場できます");
}
条件に意味のある名前をつけることで、コードの意図が伝わりやすくなります。
条件式が長いと感じたら、変数やメソッドに分けることを考えましょう。
まとめ
C#のif else文は、条件によって処理を分けるための基本構文です。プログラムに「判断」をさせるために欠かせない重要な仕組みであり、C#初心者が最初にしっかり理解しておきたい内容です。
if文だけを使うと、条件がtrueのときだけ処理を実行できます。
C#if (score >= 60)
{
Console.WriteLine("合格です");
}
if else文を使うと、条件がtrueの場合とfalseの場合で処理を分けられます。
C#if (score >= 60)
{
Console.WriteLine("合格です");
}
else
{
Console.WriteLine("不合格です");
}
さらに、else if文を使えば、複数の条件を順番に判定できます。
C#if (score >= 90)
{
Console.WriteLine("A");
}
else if (score >= 80)
{
Console.WriteLine("B");
}
else
{
Console.WriteLine("C以下");
}
C#のif else文では、条件式が必ずtrueまたはfalseになる必要があります。比較演算子や論理演算子を使い、条件を正しく書きましょう。
また、=と==の間違い、if文直後のセミコロン、波括弧の閉じ忘れ、elseの位置ミス、nullチェック忘れなどは、初心者がよくつまずくポイントです。
読みやすいif else文を書くためには、ネストを深くしすぎないこと、条件式にわかりやすい名前をつけること、インデントを整えることが大切です。
C#のif else文を使いこなせるようになると、ユーザー入力の判定、ログイン処理、成績判定、エラーチェックなど、さまざまな処理を書けるようになります。まずは基本の構文を覚え、サンプルコードを実際に書きながら、条件分岐の感覚を身につけていきましょう。

