ReSharper 2025.3 ヘルプ

コード検査: ローカル関数の前に明示的な「return」または「Continue」を追加する

メソッドの最後に 1 つ以上のローカル関数が定義されている場合、ReSharper は、最後の実行可能ステートメントとローカル関数定義の間に明示的な return を追加することを提案します。いずれにしてもメソッドはその時点で戻りますが、これを明示することで、読者にとってメソッドの制御フローがより明確になります。これは、ローカル関数の定義が長い場合、または複数のローカル関数がある場合に特に有益です。このような場合、読者はローカル関数定義の後にさらに実行可能なステートメントがあるかどうかを確認するためにメソッドの最後までスクロールする必要がありません。

次に例を示します。

void Process(string[] lines) { foreach (var line in lines) { if (IsValid(line)) { Console.WriteLine(line); } } Console.WriteLine("finishing"); bool IsValid(string str) { return str.Length > 0; } }
void Process(string[] lines) { foreach (var line in lines) { if (IsValid(line)) { Console.WriteLine(line); } } Console.WriteLine("finishing"); return; bool IsValid(string str) { return str.Length > 0; } }

ローカル関数がブロック内で定義されている場合も同様です。このような場合、明示的な continue ステートメントを追加すると、ブロックの構造がよりわかりやすくなります。

void Process(string[] lines) { foreach (var line in lines) { if (IsValid(line)) { Console.WriteLine(line); } bool IsValid(string str) { return str.Length > 0; } } }
void Process(string[] lines) { foreach (var line in lines) { if (IsValid(line)) { Console.WriteLine(line); } continue; bool IsValid(string str) { return str.Length > 0; } } }
2024 年 4 月 08 日