ReSharper 2026.1 Help

コードインスペクション:末尾再帰呼び出しはループに置き換えることができます

末尾再帰呼び出しとは、メソッドの最後のアクションとして実行される再帰呼び出しのことです。 これらの呼び出しはループに安全に置き換えることができ、多くの場合、ループの方が効率的で、再帰の深さが大きい場合に発生する可能性のある StackOverflowException (ゼロゼロパスエラー)を防ぐことができます。

このインスペクションは末尾再帰呼び出しを識別し、ループに変換することを提案します。

void DoStuff() { if (Environment.TickCount % 2 == 0) DoStuff(); }
void DoStuff() { while (true) { if (Environment.TickCount % 2 == 0) continue; break; } }

この応急処置では、メソッド本体を while (true) ループで囲み、末尾再帰呼び出しを continue ステートメントに置き換えます。

2026 年 6 月 12 日