ホームページ >バックエンド開発 >C++ >C# で入れ子になったループを効率的に終了するにはどうすればよいですか?

C# で入れ子になったループを効率的に終了するにはどうすればよいですか?

Mary-Kate Olsen
Mary-Kate Olsenオリジナル
2025-01-17 04:11:09484ブラウズ

How Can I Efficiently Exit Nested Loops in C#?

C# ネストされたループの効果的な終了方法

ネストされたループを扱う場合、多くの場合、事前にすべてのループを同時に終了する必要があります。この目的のために、いくつかの効率的な手法を使用できます。

Goto ステートメント (非推奨)

お勧めできませんが、1 つの方法は goto ステートメントを使用することです。

<code class="language-c#">for (int i = 0; i < 10; i++)
{
    for (int j = 0; j < 10; j++)
    {
        if (/* 退出条件 */)
        {
            goto ExitLoops;
        }
    }
}
ExitLoops:;</code>

このアプローチは、読みにくく、間違いが発生しやすいため、通常は推奨されません。

匿名メソッド

より柔軟なアプローチは、ネストされたループを匿名メソッドにカプセル化し、return ステートメントを使用して終了することです。

<code class="language-c#">Action work = delegate
{
    for (int x = 0; x < 10; x++)
    {
        for (int y = 0; y < 10; y++)
        {
            if (/* 退出条件 */)
            {
                return;
            }
        }
    }
};
work();</code>

この場合、匿名メソッドの return ステートメントにより、両方のネストされたループが直ちに終了します。

ローカル関数 (C# 7 以降)

C# 7 以降で導入されたローカル関数は、より洗練されたソリューションを提供します。

<code class="language-c#">void Work()
{
    for (int x = 0; x < 10; x++)
    {
        for (int y = 0; y < 10; y++)
        {
            if (/* 退出条件 */)
            {
                return;
            }
        }
    }
}</code>

ローカル関数を使用すると、別のメソッド内でメソッドを宣言できるため、コード構造を明確に保ちながら、return ステートメントを使用して両方のループを終了できます。

以上がC# で入れ子になったループを効率的に終了するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。