1. ホーム
  2. c#

[解決済み] C#で「yield break;」は何をするのか?

2022-02-02 13:37:38

質問

MSDNでこの構文を見たことがあります。 yield break しかし、それが何を意味するのかわかりません。 どなたかご存知でしょうか?

解決方法は?

イテレータが終了したことを指定します。以下のように考えることができます。 yield break として return 文は、値を返さない。

例えば、関数をイテレータとして定義する場合、関数の本体は次のようになります。

for (int i = 0; i < 5; i++)
{
    yield return i;
}

Console.Out.WriteLine("You will see me");

ループがすべてのサイクルを完了した後、最後の行が実行され、コンソールアプリにメッセージが表示されることに注意してください。

また、このように yield break :

int i = 0;
while (true)
{
    if (i < 5)
    {
        yield return i;
    }
    else
    {
        // note that i++ will not be executed after this
        yield break;
    }
    i++;
}

Console.Out.WriteLine("Won't see me");

この場合、早めに関数を抜けてしまったので、最後の文は決して実行されません。