C#のfor文の成り立ち 〜 Goto文からの発展進化〜

1. はじめに

  • C# にも goto は存在しますが、通常の繰り返し処理には使いません。
  • for 文は、goto に頼っていた繰り返し処理をより安全・簡潔にするために進化してきた制御構造です。

2. C# の Goto 文とは

2-1. Goto の役割

  • C# でも goto はラベルへジャンプするために使えます。
  • ただし多用すると処理の流れが追いにくくなるため、推奨されません。

2-2. Goto の例

using System;

class Program
{
    static void Main()
    {
        int i = 1;

    Start:
        Console.WriteLine(i);
        i++;
        if (i <= 10) goto Start;

        Console.WriteLine("終了");
    }
}
  • goto とラベル(Start:)を使って 1 〜 10 を出力する例。

3. Goto の問題点

  • どこにジャンプするかをコードの他の場所と突き合わせて理解する必要がある。
  • 条件が複雑になるとスパゲッティコード化しやすい。

4. 構造化プログラミングと for 文

4-1. C# での for 文

  • for は「初期化 → 条件 → 更新処理」を 1 行にまとめて表現できる。
  • 処理の流れが読みやすく、意図が明確。

4-2. 同じ処理を for 文で

using System;

class Program
{
    static void Main()
    {
        for (int i = 1; i <= 10; i++)
        {
            Console.WriteLine(i);
        }

        Console.WriteLine("終了");
    }
}

5. Goto と for 文の比較(C#)

項目Goto文for文
コードの流れ複数箇所にジャンプ1箇所で完結
可読性低い高い
メンテナンス性低い高い
使用例特殊な脱出処理(switchの中など)一般的なループ処理

6. C# での Goto の現代的な用途

  • goto case / goto default:switch 文の中で他のケースへ飛ばす。
  • goto を普通のループ制御には使わない。

7. まとめ

  • C# でも goto は存在するが、繰り返しは for / while / foreach が基本。
  • for 文は goto に頼るよりも意図が明確で安全。
  • 構造化プログラミングの考え方に沿って、制御構造を選ぶのが現代のスタイル。

おまけ:C# の Goto 使用例(switch文)

switch (day)
{
    case "Monday":
        Console.WriteLine("Start of week");
        break;
    case "Saturday":
    case "Sunday":
        goto case "Monday"; // "Monday" の処理を再利用
    default:
        Console.WriteLine("Midweek");
        break;
}
  • 特殊なラベルジャンプには使われるが、一般的な繰り返しには使わない。

訪問数 4 回, 今日の訪問数 1回

C#,繰り返し

Posted by hidepon