ReSharper 2026.1 Help

コードインスペクション: ループは LINQ 式に変換できます

ReSharper が for ループで IEnumerable を繰り返し処理していると判断した場合、このループを LINQ 式に変換する提案をすることがあります。 例: 次のコード:

int c = 1; for (int i = 0; i < numbers.Length; ++i) c *= numbers[i];

自動的に

int c = numbers.Aggregate(1, (current, t) => current*t);

ReSharper は通常、ループ内で定義された処理を表現できる LINQ 演算子を特定するのに十分賢明です。 例えば、上記のループ内に c += numbers[i] がある場合、ReSharper は式を numbers.Sum() に簡略化します。

しかし、このアプローチの利点は何ですか? 1 つは、反復変数に関連する記録管理を行う必要がないことです(例外は、反復変数が本当に必要な場合です)。 例えば、本当に繰り返し変数が必要な場合を除いて、繰り返し変数に関連する記録管理を行う必要がありません。 さらに、すべての LINQ 固有の利点があります。例えば、コレクション名の直後に .AsParallel() メソッド呼び出しを追加するだけで、並列化の利用をリクエストできます。 これにより、PLINQ(Parallel LINQ)を使用するようランタイムに指示し、計算を高速化できます。

2026 年 6 月 12 日