条件分岐とは
プログラミングでは、「もしAという条件が満たされていれば、Bという処理を行う」といったように、状況に応じて実行する内容を変更したい場面が数多くあります。このような処理の流れを「条件分岐」と呼びます。
C#において、この条件分岐を実現するための最も基本的で重要な構文がif文です。この記事では、if文の基本的な書き方から、elseやelse ifを使った応用的な使い方までを解説します。
if文の基本構文
if文は、指定された条件式を評価し、その結果が**真(true)**である場合にのみ、続くブロック内の処理を実行します。
構文は以下の通りです。
if (条件式)
{
// 条件式が true の場合に実行される処理
}
条件式には、結果がtrueまたはfalseになる式(ブール式)を記述します。
if文のコード例
例えば、「ユーザーがログインしている場合にのみ、歓迎メッセージを表示する」処理は以下のように記述できます。
using System;
public class IfBasicExample
{
public static void Main()
{
bool isUserLoggedIn = true;
string userName = "GuestUser";
if (isUserLoggedIn)
{
userName = "RegisteredUser_01";
Console.WriteLine($"ようこそ、{userName} さん。");
}
Console.WriteLine("プログラムを終了します。");
}
}
出力結果:
ようこそ、RegisteredUser_01 さん。
プログラムを終了します。
もしisUserLoggedInがfalseであった場合、ifブロック内の処理(ユーザー名の変更とメッセージの表示)はスキップされ、最後の「プログラムを終了します。」のみが出力されます。
if-else構文:条件が偽(false)の場合
if文にelseブロックを追加すると、「条件が真(true)だった場合の処理」と「条件が偽(false)だった場合の処理」を明確に分けることができます。
if (条件式)
{
// 条件式が true の場合に実行される処理
}
else
{
// 条件式が false の場合に実行される処理
}
if-elseのコード例
試験の点数に応じて「合格」または「不合格」を表示する処理を考えます。
using System;
public class IfElseExample
{
public static void Main()
{
int studentScore = 78;
int passingMark = 80; // 合格ライン
if (studentScore >= passingMark)
{
Console.WriteLine($"点数: {studentScore}点。合格です。");
}
else
{
Console.WriteLine($"点数: {studentScore}点。不合格です。");
}
}
}
出力結果:
点数: 78点。不合格です。
studentScore >= passingMark(78は80以上)という条件式がfalseになるため、elseブロック内の処理が実行されます。
else if構文:複数の条件を判定する
判定したい条件が3つ以上ある場合は、else ifを使用して条件分岐を連鎖させることができます。
if文から始まり、else ifで条件を追加し、どの条件にも当てはまらなかった場合の処理を最後のelseに記述します。
if (条件式 1)
{
// 条件式 1 が true の場合の処理
}
else if (条件式 2)
{
// 条件式 1 が false で、かつ 条件式 2 が true の場合の処理
}
else
{
// 上記のどの条件も false だった場合の処理
}
else ifのコード例
else ifは、上から順に条件が評価され、一度trueになったブロックの処理が実行されると、それ以降のelse ifやelseは評価されずに全体の処理を抜けます。
using System;
public class ElseIfExample
{
public static void Main()
{
int temperature = 22; // 現在の室温
if (temperature >= 28)
{
Console.WriteLine("冷房を強に設定します。");
}
else if (temperature >= 25)
{
Console.WriteLine("冷房を弱に設定します。");
}
else if (temperature <= 18)
{
Console.WriteLine("暖房を設定します。");
}
else
{
Console.WriteLine("空調は現状維持です。");
}
}
}
出力結果:
空調は現状維持です。
temperatureが22であるため、>= 28(false)、>= 25(false)、<= 18(false)のすべてに該当せず、最終的にelseブロックが実行されます。
if文の注意点:== と = の違い
if文の条件式でよくある間違いとして、比較演算子(==)と代入演算子(=)の混同があります。
==は、「左辺と右辺が等しいか」を判定する比較演算子です。=は、「右辺の値を左辺に代入する」代入演算子です。
C#は静的型付け言語であるため、多くの場合はコンパイルエラーとして検出されます。
int value = 10;
// 正しい比較 (true になる)
if (value == 10) { /* ... */ }
// 間違い (コンパイルエラー)
// 理由: if文の条件式は bool 型でなければならないが、
// (value = 10) という代入式の結果は int 型の 10 になるため。
// if (value = 10) { /* ... */ }
ただし、変数がbool型の場合は、代入が成功してしまうためバグの原因となります。
bool isReady = false;
// 意図: isReady が true かどうか比較したい
// 間違い: isReady に true を代入してしまい、結果も true になる
if (isReady = true)
{
// このブロックは意図せず常に実行されてしまう
Console.WriteLine("常に実行されます。");
}
条件分岐を書く際は、比較には==を使用することを常に意識する必要があります。
まとめ
if文は、プログラムの流れを制御するための基本的な構文です。
if: 単一の条件が真のときだけ処理を実行します。if-else: 条件が真の場合と偽の場合で処理を分岐させます。else if: 複数の条件を順番に判定し、複雑な分岐ロジックを構築します。
これらの構文を正しく理解し使い分けることが、意図した通りの動作をするプログラムを作成する第一歩となります。
