C#で条件分岐を行ううえで、if文は必ずと言ってよいほど登場します。
この記事では、C#のif文の基本構文から、else if・ネスト・三項演算子まで、よく使うパターンを体系的に整理します。
これからC#を本格的に学びたい方や、条件分岐の書き方をしっかり固めたい方に向けて、図解とサンプルコードを交えながら丁寧に解説します。
【C#】if文とは何かをまず理解しよう
if文の役割とイメージ

プログラムでは、状況に応じて処理を変える必要があります。
例えば、スコアが一定以上のときに合格と表示したり、ログインに成功したときだけメニュー画面を表示したりする場合です。
このように条件に応じて処理を切り替えるための仕組みが「if文」です。
C#では、条件がtrue(真)のときだけ、if文の中の処理が実行されます。
条件がfalse(偽)のときはスキップされます。
if文の基本構文
もっとも基本的なif文の形
C#のif文の基本構文は次のようになります。
if (条件式)
{
// 条件式がtrueのときに実行される処理
}
ポイントは、条件式の中にはbool型(真偽値)に評価される式を書くことです。
比較演算子や論理演算子を組み合わせて条件を作ります。
基本例: 年齢が20歳以上なら「成人です」と表示
using System;
class Program
{
static void Main()
{
int age = 21; // 年齢(サンプルとして21を代入)
// ageが20以上なら成人と表示する
if (age >= 20) // 条件式: ageが20以上かどうか
{
Console.WriteLine("成人です");
}
Console.WriteLine("処理が終了しました");
}
}
成人です
処理が終了しました
この例ではage >= 20がtrueなので、if文の中身が実行されます。
もしageが18なら、条件はfalseとなり、「成人です」は表示されません。
if ~ else文で「そうでない場合」を書く
ifだけだと「条件が成り立たないとき」の処理が書きにくい

if文だけでは、「条件がtrueのとき」の処理しか記述できません。
条件がfalseのときに別の処理をしたい場合は、else句を組み合わせます。
if ~ elseの構文
if (条件式)
{
// 条件式がtrueのときの処理
}
else
{
// 条件式がfalseのときの処理
}
例: 成人か未成年かを判定する
using System;
class Program
{
static void Main()
{
int age = 16;
if (age >= 20)
{
Console.WriteLine("成人です");
}
else
{
Console.WriteLine("未成年です");
}
}
}
未成年です
このようにifとelseはセットで「どちらか一方だけが必ず実行される」構造になります。
else ifで複数条件を順番にチェックする
「3つ以上のパターン」を分けたいとき

成績によって表示を変えたいなど、条件が複数ある場合はelse ifを使います。
上から順番に条件を判定し、最初にtrueになったブロックだけが実行されます。
if ~ else if ~ elseの構文
if (条件式1)
{
// 条件式1がtrueのときの処理
}
else if (条件式2)
{
// 条件式1がfalse かつ 条件式2がtrueのときの処理
}
else if (条件式3)
{
// 条件式1,2がfalse かつ 条件式3がtrueのときの処理
}
else
{
// どの条件式もtrueにならなかったときの処理
}
例: 点数でランクを判定する
using System;
class Program
{
static void Main()
{
int score = 78;
if (score >= 90)
{
Console.WriteLine("評価: S");
}
else if (score >= 80)
{
Console.WriteLine("評価: A");
}
else if (score >= 70)
{
Console.WriteLine("評価: B");
}
else if (score >= 60)
{
Console.WriteLine("評価: C");
}
else
{
Console.WriteLine("評価: D");
}
}
}
評価: B
ここで条件の順番は非常に重要です。
例えばscore >= 70を先に書いてしまうと、90点以上でもBとして判定されてしまいます。
範囲が広い条件ほど後ろに書くのがコツです。
ネストしたif文(入れ子構造)の使い方
条件の中でさらに条件を分ける

ある条件の中で、さらに別の条件を判定したいときにはif文を入れ子(ネスト)にします。
例: ログイン成功後に管理者かどうか判定する
using System;
class Program
{
static void Main()
{
bool isLoggedIn = true; // ログインしているかどうか
bool isAdmin = false; // 管理者かどうか
if (isLoggedIn)
{
Console.WriteLine("ログイン済みです");
// ログインしているユーザーの中で、さらに管理者かどうかを判定
if (isAdmin)
{
Console.WriteLine("管理者メニューを表示します");
}
else
{
Console.WriteLine("一般ユーザーメニューを表示します");
}
}
else
{
Console.WriteLine("ログインしてください");
}
}
}
ログイン済みです
一般ユーザーメニューを表示します
このようにネストしたifを使うと、段階的な判定が可能になります。
ただし、深くなりすぎると読みにくいため、3段以上のネストは避ける、早期リターンで分岐を減らすなどの工夫も大切です。
条件式の書き方とよく使う演算子
比較演算子で値を比べる
if文では、次のような比較演算子をよく使います。
| 演算子 | 意味 | 例(cst-code>x = 5のとき) | 結果 |
|---|---|---|---|
== | 等しい | x == 5 | true |
!= | 等しくない | x != 5 | false |
< | より小さい | x < 10 | true |
> | より大きい | x > 10 | false |
<= | 以下 | x <= 5 | true |
>= | 以上 | x >= 6 | false |
代入演算子=と、等価比較の==を混同しないことがとても重要です。
論理演算子で条件を組み合わせる
複数の条件を組み合わせたいときは、論理演算子を使います。
| 演算子 | 読み方 | 意味 | 例 |
|---|---|---|---|
&& | 論理AND | 両方trueならtrue | age >= 20 && age < 65 |
|| | 論理OR | どちらかがtrueならtrue | age < 20 || age >= 65 |
! | 論理NOT(否定) | true/falseを反転 | !isLoggedIn |
例: 年齢が20歳以上かつ65歳未満のときだけ「一般料金」と表示する
using System;
class Program
{
static void Main()
{
int age = 30;
if (age >= 20 && age < 65)
{
Console.WriteLine("一般料金です");
}
else
{
Console.WriteLine("割引対象です");
}
}
}
一般料金です
論理演算子を使うことで、if文の数を増やさずに複雑な条件を表現できるようになります。
bool型とif文のシンプルな書き方
bool変数をそのまま条件に使う
C#ではbool型の変数を、そのままif文の条件式として使用できます。
true/falseの変数に対して== trueなどと比較する必要はありません。
良くない例と良い例の比較
using System;
class Program
{
static void Main()
{
bool isActive = true;
// 良くない書き方(冗長)
if (isActive == true)
{
Console.WriteLine("有効です");
}
// 良い書き方(シンプル)
if (isActive)
{
Console.WriteLine("こちらも有効です");
}
// 否定したい場合
if (!isActive)
{
Console.WriteLine("無効です");
}
}
}
有効です
こちらも有効です
このようにbool型のifはできるだけシンプルに書くと、コードの読みやすさが上がります。
三項演算子で「短いif」を1行にまとめる
「値を代入するだけ」のifなら三項演算子が便利

if文は便利ですが、単に「条件によって代入する値を変えたい」だけのときは、やや冗長になることがあります。
そこで使えるのが三項演算子です。
三項演算子の構文
条件式 ? 条件がtrueのときの値 : 条件がfalseのときの値
例: 点数で合否メッセージを決める
using System;
class Program
{
static void Main()
{
int score = 55;
// 三項演算子で合否の文字列を決定
string result = (score >= 60) ? "合格" : "不合格";
Console.WriteLine(result);
}
}
不合格
この処理をif文で書くと次のようになります。
string result;
if (score >= 60)
{
result = "合格";
}
else
{
result = "不合格";
}
代入する値を選ぶだけなら三項演算子の方が短く書けて便利です。
ただし、三項演算子の中にさらに三項演算子をネストすると読みづらくなるため、その場合は素直にif文を使うとよいです。
よくあるif文の書き方ミスと注意点
ありがちなミスと対策
| ミスの例 | 問題点 | 対策 |
|---|---|---|
if (x = 5) | 代入演算子=と比較==の混同 | C#ではコンパイルエラー。エディタの警告を確認 |
| ネストが深くなりすぎる | 読みにくく、バグの温床になる | 早期return・メソッド分割で分岐を整理 |
| 条件が重複・矛盾している | 意図しない分岐に入ってしまう | 上から順に「ありえるケースだけ」にする |
| 三項演算子を複雑にネストする | 一見しただけでは意味が分からない | if文に戻す・補助変数を使う |
特にif ~ else if ~ elseの条件順が正しいかは、テストケースをいくつか考えてチェックしておくと安心です。
まとめ
この記事では、C#のif文の基本から、else if・ネスト・論理演算子・三項演算子まで、条件分岐でよく使う書き方を一通り解説しました。
実際の開発では、複雑な条件を1つのifで処理しようとするよりも、条件を分かりやすく分解し、早期returnやメソッド分割で整理した方が保守しやすくなります。
まずはここで紹介したパターンを小さなサンプルで試しながら、「読みやすく、意図が伝わるif文」を書く練習をしてみてください。
