今回は私もよく調べなおしてしまうネタとして。
Unityでもよく使用する C#の処理中断系命令である「break」「continue」「return」の違いについてまとめました。
Unity Basic_127

【各処理の概要】

break:

その命令の処理(ループ処理であればループ全体)自体を、途中で終わらせます。

初心者でも switch文でよく見るお決まりの物です。
for文や while文でも使います。
例えば for文内で使用すると、その for文はそこで終了して、その次の命令に処理が移ります。


continue:

ループ処理のその1つのループをそこで中断して、次のループに移ります。

上記の「break」よりは、中断力が弱いと言えます。
ループ文である while文でも使用できます。
例えば for文内で使用すると、ループ中のその1つのループがそこで終了して、その for文内の次のループに処理が移ります。


return:

関数自体の処理をそこで中断し、関数の呼び出し元に戻ります。

初心者でも戻り値のある関数を書いた場合は必ず必要となる物です。
Unityでは、update関数の前半で処理をその先に進めさせたくないときや、コルーチンなんかでよく使っています。
関数自体の処理が中断されるので、上記の「break」「continue」より中断力が強いと言えます。



【処理事例】

これらの処理を実際に使用して、流れを確認してみましょう。

2つの for文を使います。
 1.1つ目の for文内で、最初に「continue」の使用。
 2.そして、同じ for文内で「break」も使用します。
 3.最後に、2つ目の for文内で「return」のテストを実施します。

Unity Basic_128

using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class Test_Continue : MonoBehaviour
{    
    void Start()
    {
        Debug.Log("関数呼出し前");
        bool temp = Return_Test();
        Debug.Log("関数呼出し後 :" + temp);
    }

    private bool Return_Test()
    {
        for (int i = 1; i < 10; i++)
        {
            if (i == 3) continue;
            if (i == 6) break;
            Debug.Log("ループ番号 i:" + i);
        }

        Debug.Log("1つ目のfor文が終了");

        for (int j = 1; j < 10; j++)
        {
            if (j == 4) return true ;
            Debug.Log("ループ番号 j:" + j);
        }

        Debug.Log("2つ目のfor文が終了");
        return false;
    }
}

この実行結果が以下のようになります。

[注目点]
  1. まず「ループ番号 i: 3」で「continue」が呼ばれたので、「ループ番号 i: 3」は出力されていません。
  2. そして、「ループ番号 i: 6」のタイミングで「break」が呼ばれたので、「ループ番号 i: 6」は出力されず、1つ目の for文が終了します。ですので、その先の「ループ番号 i: 7」以降も出力されませんでした。
  3. 次に2つ目の for文が実行され、「ループ番号 j: 4」のタイミングで「return」が呼ばれて、その後の処理は実行されることなく、関数の呼び元に処理がもどりました。
Unity Basic_129


どうでしたか。
覚えていても、すぐ あやふやになってしまうんですよね。
今回は、そんな自分への備忘の意味も含めてまとめてみました。



Sponsored Link