ホームページ > バックエンド開発 > C++ > C# で入れ子になったループから効率的に抜け出すには?

C# で入れ子になったループから効率的に抜け出すには?

Mary-Kate Olsen
リリース: 2025-01-17 04:17:07
オリジナル
500 人が閲覧しました

How to Efficiently Break Out of Nested Loops in C#?

C# のネストされたループを効率的に終了する

プログラミングでは、複数のコレクションを反復したり、複雑な計算を実行したりするために、入れ子になったループがよく使用されます。ただし、場合によっては、内部ループと外部ループを早期に終了する必要がある場合があり、これによりパフォーマンスと効率の問題が発生する可能性があります。

質問:

入れ子になった for ループがあり、両方のループ (内側と外側) を効率的に終了したい場合、最も速い方法は何でしょうか?パフォーマンス上の懸念やスタイルの好みのため、ブール値や goto ステートメントの使用をためらう場合があります。

解決策:

goto ステートメントを使用することもできますが、一般に、これは時代遅れで非効率なアプローチであると考えられています。次の代替案を検討してください:

1. 匿名メソッド (C#):

匿名メソッドを使用すると、名前を指定せずに関数を定義できます。これは、完全な関数宣言のオーバーヘッドを発生させずにカスタム ループ動作を作成する必要がある場合に便利です。匿名メソッドでは、return ステートメントを使用して内部ループと外部ループを終了できます。

例:

<code class="language-csharp">// 匿名方法
Action work = delegate
{
    for (int x = 0; x < 10; x++)
    {
        for (int y = 0; y < 10; y++)
        {
            if (/* 退出条件 */) return;
        }
    }
};
work();</code>
ログイン後にコピー

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

ローカル関数は、C# 7 で導入された機能で、他のメソッド内で関数を宣言できるようになります。これにより、匿名メソッドと同様の効果が得られますが、構文がよりクリーンで表現力豊かになります。

例:

<code class="language-csharp">// 局部函数(在另一个方法内部声明)
void Work()
{
    for (int x = 0; x < 10; x++)
    {
        for (int y = 0; y < 10; y++)
        {
            if (/* 退出条件 */) return;
        }
    }
}</code>
ログイン後にコピー

これらのメソッドは、単一行のコードでネストされたループを終了する効率的かつ洗練された方法を提供します。これらは、ループの実行を早期に終了し、コードの次のセクションの実行を継続する必要がある状況で使用できます。

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

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート