C# のbreak、continue、goto: ループから抜け出す

C# のブレーク、続行、goto: ループから抜け出す

 
ループ ステートメントを使用する場合、ループを終了する前にループが完了するのを待つ必要はありません。ループを積極的に終了することもできます。C# では、ループから抜け出す 3 つの方法として、break、 continue、および goto が用意されています。以下に個別に説明します。

 

1.休憩

前に「 switch ステートメント」を学習したときに、break ステートメントについては簡単に理解できました。これは switch ステートメントを終了するために使用できるだけでなく、ループから抜け出して次のステートメントをループ外で実行するためにも使用できます。ループ文で使用されます。

内側のループで Break ステートメントを使用するなど、ネストされたループで使用される場合、プログラムは内側のループから飛び出すだけで、外側のループの実行には影響しません。

2. 続ける

C# の continue ステートメントの動作原理は Break ステートメントと似ていますが、Continue ステートメントはループ全体から飛び出すのではなく、このループをスキップして次のループの実行を継続します。 continueの実行原理を下図に示します。

[例] for ループを使用して 1 ~ 9 の数値を出力し、5 に遭遇した場合はスキップします。

 using System;

namespace it-kiso.com
{
    class Demo
    {
        static void Main(string[] args){
            for(int i = 1; i <= 9; i++){
                if(i == 5){
                    continue;
                }
                Console.Write("{0} ", i);
            }
            Console.ReadLine();
        }
    }
} 

操作の結果は次のようになります。

1 2 3 4 6 7 8 9

3. 後藤

C# の goto ステートメントはジャンプ ステートメントとも呼ばれ、指定された場所にジャンプして実行するようにプログラムを制御できます。ただし、プログラム内で goto ステートメントを複数回使用することは、プログラムが複雑になるため推奨されません。 goto ステートメントの構文形式は次のとおりです。

goto Labels;
statement1;

Labels:
    statement2;

goto 文を使用してプログラムにジャンプする場合は、まずジャンプ先の位置にラベル (Labels) を定義する必要があります。ラベル名の定義は変数名と同様で、その後goto label;を使用します。 goto label;プログラムを指定された位置の実行にジャンプさせます。上記の構文に示すように、プログラムは「ステートメント ブロック 1」をスキップし、「ステートメント ブロック 2」を直接実行します。

ヒント: goto ステートメントはループ内での使用に限定されず、他の状況でも同様に使用できます。ただし、goto 文はループの外からループ文にジャンプしたり、クラスのスコープの外にジャンプしたりすることはできません。

【例】 goto文を使用して、指定した位置にプログラムをジャンプして実行します。

 using System;

namespace it-kiso.com
{
    class Demo
    {
        static void Main(string[] args){
            int count = 1;
            login:
                Console.WriteLine("ユーザー名を入力してください");
                string username = Console.ReadLine();
                Console.WriteLine("パスワードを入力してください");
                string userpwd = Console.ReadLine();
            if (username == "it-kiso.com" && userpwd == "123456"){
                Console.WriteLine("ログインしました");
            }else{
                count++;
                if (count > 3){
                    Console.WriteLine("ユーザー名またはパスワードエラーが多すぎます!終了します!");
                }else{
                    Console.WriteLine("ユーザー名またはパスワードが間違っています");
                    goto login;//ラベル"login"まで戻り、ユーザー名とパスワードを再度入力する
                }
            }
        }
    }
} 

 

「C# のbreak,continue,goto: ループから抜け出す」についてわかりやすく解説!絶対に観るべきベスト2動画

C# Tutorial – 11: Usages of break & continue statement in C# loops
Tutorial 12 de C# – Break, Continue y Goto