[ C# ] yield break ステートメントを使用して反復子を終了する

Pocket

ここでは、C# における yield return および yield break ステートメントの基本的な使用方法について掲載しています。

最近知りました。積極的に知識を吸収しようとしなければ、知らないことばかりです。反省。

スポンサーリンク

yield break ステートメント

下記では yield return ステートメントについての簡単なサンプルを実行しましたが、今回は途中で値の返却を中断してみます。

[ C# ] yield return って何よ?(呼び出し元に値を返しつつ繰り返し処理を継続する)

下記に示すのは、yield break ステートメントのサンプルコードです。詳細はサンプル内のコメントを参照ください。

        private void button1_Click(object sender, EventArgs e)
        {
            foreach(int i in GetIntValues())
            {
                Console.WriteLine(i.ToString()); // 1
            }
        }

        private IEnumerable<int> GetIntValues()
        {
            // リターンされる
            yield return 1;

            // 何らかの条件に合致したら以降の値を返却を中断する
            if(true)
            {
                yield break;
                // return;

                /*
                 * 上記のように return 文で処理を中断することはできない。
                 * 次のコンパイルエラーが発生する
                 * 
                 * CS1622
                 * 反復子から値を返すことができません。yield return ステートメントを使用して値を返すか、
                 * yield break ステートメントを使用して反復子を終了してください。
                 */
            }

            // このサンプルでは次の値は呼び出し元にリターンされない
            yield return 2;
        }

 

スポンサーリンク


Pocket

Leave a Comment

Your email address will not be published. Required fields are marked *