カテゴリ: C# 更新日: 2026/06/09

C#で条件分岐をネストする方法!入れ子構造の書き方を基礎から学ぼう

C#で条件分岐をネストする方法!入れ子構造の書き方を基礎から学ぼう
C#で条件分岐をネストする方法!入れ子構造の書き方を基礎から学ぼう

先生と生徒の会話形式で理解しよう

生徒

「C#で複数の条件を組み合わせて分岐させることってできますか?」

先生

「はい、できますよ。そういうときにはif文をネスト(入れ子)にして使います。」

生徒

「ネストってなんですか?むずかしそう……」

先生

「ネストとは、if文の中にさらにif文を書くことです。たとえば、『Aのとき、さらにBのときだけ実行』といった細かい条件を指定できます。」

生徒

「なるほど、条件を重ねて細かく分けられるんですね!」

先生

「その通りです。それでは、if文のネスト構造の基本から見ていきましょう。」

1. if文のネスト(入れ子)とは?

1. if文のネスト(入れ子)とは?
1. if文のネスト(入れ子)とは?

C#でプログラミングをしていると、「もし〜なら」という条件だけでなく、「もし〜で、さらにその中で〜なら」という、より複雑な条件を作りたい場面が出てきます。そんな時に役立つのが「ネスト(入れ子)」というテクニックです。

ネストとは、ロシアの民芸品「マトリョーシカ」のように、あるif文のブロック({ }で囲まれた範囲)の中に、さらに別のif文を書き入れることを指します。これにより、条件を段階的にふるいにかけ、特定の条件をすべてクリアした時だけ処理を実行させることが可能になります。

例えば、「遊園地のアトラクションに乗れるかどうか」を判定する簡単なプログラムで考えてみましょう。


// 身長とチケットの有無をチェックする例
int height = 130;       // 身長
bool hasTicket = true;  // チケットを持っているか

if (height >= 120) // 【条件1】身長が120cm以上か?
{
    // 身長の条件をクリアした人だけが、ここ(内側)に入れます
    if (hasTicket == true) // 【条件2】さらにチケットを持っているか?
    {
        // 身長もチケットも両方クリア!
        Console.WriteLine("アトラクションに乗れます。いってらっしゃい!");
    }
}

実行結果:


アトラクションに乗れます。いってらっしゃい!

このコードのポイントは、外側のif文(身長チェック)が成立しない限り、内側のif文(チケットチェック)は読み飛ばされるという点です。このように、前提条件を確認してから次のステップへ進むような処理を作るのが、ネストの得意分野です。

2. if文のネストの基本構文と書き方

2. if文のネストの基本構文と書き方
2. if文のネストの基本構文と書き方

プログラミングにおける「ネスト(入れ子)」とは、ある処理の中に、さらに同じ種類の処理を含めることを指します。if文の中に別のif文を書くことで、「もし〇〇なら、さらに△△の場合だけ実行する」といった、より複雑な条件分岐を作ることが可能になります。

まずは、プログラミング未経験の方でもイメージしやすい、テストの結果を判定するシンプルなサンプルコードを見てみましょう。


int score = 85;
string grade = "A";

// 外側のif文:スコアが80以上かどうかをチェック
if (score >= 80)
{
    // 内側のif文:スコアが80以上だった場合、さらに成績ランクをチェック
    if (grade == "A")
    {
        Console.WriteLine("おめでとうございます!スコアは80以上で、かつ成績も最高評価のAです。");
    }
}

実行結果:


おめでとうございます!スコアは80以上で、かつ成績も最高評価のAです。

このプログラムの動きを順番に解説します。まず1つ目のif文(外側)でscoreが80以上であるかを確認します。この条件が「真(Yes)」の場合のみ、中にある2つ目のif文(内側)へと進みます。

内側のif文でgradeが"A"であることを確認し、これら2つの条件がどちらも成立したときだけ、画面にメッセージが表示される仕組みです。もし最初の条件(スコア80以上)を満たしていなければ、内側のif文は完全に無視されるため、効率的に条件を絞り込むことができます。

3. ネストが使える実用的な例

3. ネストが使える実用的な例
3. ネストが使える実用的な例

プログラミングを学んでいると、「もし〜なら、さらに〜の場合」というように、条件を段階的に絞り込みたい場面がよくあります。これを現実のシーンに当てはめると、ネスト(入れ子)構造の便利さがより実感できるはずです。

ここでは、初心者の方にも分かりやすい例として、「国籍」と「年齢」という2つのフィルターを使って、表示するメッセージを切り替えるプログラムを見てみましょう。


int age = 20;
string nationality = "日本";

// 最初のチェック:国籍を確認する
if (nationality == "日本")
{
    // 国籍が「日本」だった場合のみ、この中の年齢チェックに進む
    if (age >= 20)
    {
        Console.WriteLine("あなたは日本人の大人です。");
    }
    else
    {
        Console.WriteLine("あなたは日本人ですが未成年です。");
    }
}
else
{
    // 最初のチェック(日本)に当てはまらなかった場合
    Console.WriteLine("あなたは外国籍です。");
}

このプログラムを実行すると、次のような結果が表示されます。


あなたは日本人の大人です。

このように、「まずは大きな枠組み(国籍)で分け、その内側でさらに詳細な条件(年齢)を判定する」という流れを作るのがネストの役割です。一見複雑に見えるかもしれませんが、「外側の扉が開かなければ、内側の扉にはたどり着けない」というイメージで捉えると、プログラムの動きが直感的に理解しやすくなります。この仕組みをマスターすれば、より複雑な業務ロジックもスムーズに書けるようになりますよ。

4. ネスト構造が深くなりすぎないように注意

4. ネスト構造が深くなりすぎないように注意
4. ネスト構造が深くなりすぎないように注意

ネストは便利ですが、ネストが深くなりすぎると、コードが読みにくくなるというデメリットがあります。例えば以下のように、3重、4重とネストが続くと、どこで何をしているのか分かりにくくなります。


if (a > 0)
{
    if (b > 0)
    {
        if (c > 0)
        {
            if (d > 0)
            {
                Console.WriteLine("すべての条件を満たしました。");
            }
        }
    }
}

このようなときは、ifの条件を整理して、else ifを使ったり、論理演算子(&&など)を使ってifを1つにまとめるとよいです。

5. ネストを減らすテクニック:論理演算子との併用

5. ネストを減らすテクニック:論理演算子との併用
5. ネストを減らすテクニック:論理演算子との併用

複数の条件を同時にチェックできる論理演算子(ANDは&&、ORは||)を使うと、ネストを減らしてコードをスッキリさせることができます。


int score = 90;
string grade = "A";

if (score >= 80 && grade == "A")
{
    Console.WriteLine("スコアが80以上で、成績はAです。");
}

このように1つのifで複数の条件をまとめることで、見やすく、メンテナンスしやすいコードになります。

6. ネストが適しているケースとは?

6. ネストが適しているケースとは?
6. ネストが適しているケースとは?

すべてのネストが悪いわけではありません。例えば、最初の条件が満たされたときだけ、次の条件を確認したいといった段階的なチェックでは、ネストがとても便利です。

以下のように、無駄な条件判定を避けて、効率的なプログラムを作るのに役立ちます。


bool isMember = true;
int purchaseAmount = 12000;

if (isMember)
{
    if (purchaseAmount >= 10000)
    {
        Console.WriteLine("会員で、1万円以上購入したので10%割引です。");
    }
}

7. ネストは「条件の中の条件」を書くときに使おう

7. ネストは「条件の中の条件」を書くときに使おう
7. ネストは「条件の中の条件」を書くときに使おう

if文のネスト(入れ子構造)は、条件を段階的にチェックしたいときに非常に便利なテクニックです。ですが、深くなりすぎないように注意しながら使いましょう。

論理演算子との使い分けを覚えることで、読みやすく効率的なコードが書けるようになります。

まとめ

まとめ
まとめ

C#におけるif文のネスト(入れ子構造)は、複数の条件を段階的にチェックしたい場合にとても有効な書き方です。たとえば、「ある条件が満たされているときに、さらに別の条件が成り立っているかを確認したい」といったケースでは、ネスト構造を使うことでより厳密な分岐処理が実現できます。今回の記事では、ネストの基本的な書き方や日常的な例を通して、入れ子構造がどのように動作するのかを丁寧に学んできました。 特に、最初のifの中に別のifを入れることで、条件を一段ずつ細かく判定できる点が、ネスト構造の大きな利点です。ただし、ネストを重ねすぎてしまうと、コードが読みにくくなり、意図を理解しづらくなるため注意が必要です。深くなりすぎるネストは、論理演算子(たとえば&&||)を活用して、できるだけ整理された状態に保つように心がけましょう。 また、ネストの構造は、単に読みやすさの問題だけではなく、プログラムの効率や実行速度にも影響を与えることがあります。不要な判定を避けて処理を減らすためにも、ネスト構造の設計は重要です。実際の業務システムやアプリケーション開発でも、「ある条件下でさらに細かい判定をしたい」「特定の条件が成立したときだけ分岐を進めたい」という場面は多く、ネスト構造をしっかり理解しておくことで、コードの品質や保守性も大きく向上します。 以下はネスト構造を整理して、読みやすく書いた例です。


int age = 25;
bool isStudent = false;

if (age >= 20 && !isStudent)
{
    Console.WriteLine("成人で、かつ学生ではありません。");
}

上記のように、複数の条件をifの中に論理演算子でまとめることで、ネストを使わなくてもスッキリしたコードが実現できます。とはいえ、あえて段階的に処理を明示したい場面では、ネスト構造も非常に有効です。たとえば、ユーザーの登録状況や支払い状況など、ビジネスロジックが複雑な場合には、「条件の中の条件」としてネストを活用することで、柔軟な処理が実装できます。 プログラムを読みやすく、そして誰が見ても理解しやすい構造にすることは、初学者にとっても上級者にとっても非常に重要なテーマです。ネスト構造は、そうした「条件整理力」を養ううえでも役立ちます。今回学んだように、if文のネストはただの「テクニック」ではなく、実際の業務や現場でも必要とされる知識です。正しく使いこなすことで、無駄のない条件分岐が書けるようになります。 最後に、if文のネストを設計する際には、以下のポイントを意識すると良いでしょう。

  • 条件は「重要な順」に書く(無駄な判定を減らす)
  • 処理の流れがわかりやすくなるようにコメントを入れる
  • 複雑になりすぎたらメソッドに分けて処理を整理する
C#の条件分岐は、構造が単純だからこそ奥深く、ネストや論理演算子をどう組み合わせるかで、コードの可読性と拡張性が大きく変わります。初心者の方はまず、簡単な2重ネストから始めて、徐々に応用へ進んでいくと良いでしょう。そして、ネストが深くなりすぎたと感じたら、「本当にこの書き方がベストか?」と一度立ち止まって見直すことが大切です。 これから実践的なプログラムを書く中で、if文のネストとその整理術は必ず役に立ちます。条件分岐を自在にコントロールできるようになれば、より柔軟で信頼性の高いC#コードが書けるようになるでしょう。

先生と生徒の振り返り会話

生徒

「if文をネストするって、最初は難しく感じたけど、慣れると便利ですね!」

先生

「そうですね。条件を分けて段階的に判断したいときには、ネストがとても役立ちますよ。」

生徒

「でもネストが深くなると、ちょっとごちゃごちゃして読みにくくなりますね……」

先生

「そのとおりです。ネストが多くなるときは、論理演算子で条件をまとめたり、メソッドに分ける工夫が必要になります。」

生徒

「なるほど、整理の工夫をしながら使えば、ネストも怖くないんですね!」

先生

「はい、ネストを理解して使いこなせるようになると、複雑な条件でもスムーズに処理できますよ。ぜひいろいろな条件で試してみてくださいね。」

この記事を読んだ人からの質問

この記事を読んだ人からの質問
この記事を読んだ人からの質問

プログラミング初心者からのよくある疑問/質問を解決します

C#のif文のネストとは何ですか?初心者でも使えますか?

C#のif文のネストとは、あるif文の中にさらに別のif文を書く「入れ子構造」のことを指します。初心者でも基本を覚えれば簡単に使える条件分岐のテクニックです。

C#で条件分岐をネストするメリットは何ですか?

C#でネスト構造を使うと、条件を段階的にチェックできるため、より厳密な条件分岐が可能になります。たとえば「AかつBのときだけ処理する」などが実現できます。
カテゴリの一覧へ
新着記事
New1
COBOL
COBOLのPERFORM WITH TEST AFTERの使い方を完全ガイド!初心者でもわかる繰り返し処理の基本
New2
COBOL
COBOLのPERFORM WITH TEST BEFOREの使い方を完全ガイド!初心者向けループ処理の基本
New3
C#
C#のASP.NETでCORSを設定する方法を完全解説!エラー解決とWebアプリ開発初心者向けガイド
New4
Azure
Azure WAFポリシーの作成と管理を徹底解説!複数リソースで共有する設定術
人気記事
No.1
Java&Spring記事人気No1
C#
C#のstaticクラスとstaticメソッドの基本と使い方をやさしく解説!
No.2
Java&Spring記事人気No2
Azure
Azure SQL Database購入モデル比較!vCoreとDTUの違いと選び方を初心者向けに解説
No.3
Java&Spring記事人気No3
C#
C#のbool型を完全解説!初心者でもわかるtrueとfalseの基本と使い方
No.4
Java&Spring記事人気No4
C#
C#でswitch式を使う方法!C# 8.0以降の新機能を解説
No.5
Java&Spring記事人気No5
C#
C#のWPFとは?XAMLでGUI開発を基礎から完全解説!初心者向けの入門ガイド
No.6
Java&Spring記事人気No6
Azure
Azureストレージの冗長性比較!LRS/GRS/ZRSの選び方とコストの最適解を完全解説
No.7
Java&Spring記事人気No7
C#
C#のイベント処理を完全攻略!WinFormsとWPFの基本を解説
No.8
Java&Spring記事人気No8
C#
C#の文字列を数値に変換する方法(int.Parse・TryParse)をわかりやすく解説!