コードインスペクション: ループは LINQ 式に変換できます
JetBrains Rider が 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);
JetBrains Rider は通常、ループ内で定義されている処理を表現できる LINQ 演算子を見分けるほど賢いです。 例えば、上記のループに c += numbers[i] が含まれている場合、JetBrains Rider はその式を numbers.Sum() まで単純化します。
しかし、このアプローチの利点は何ですか? 1 つは、反復変数に関連する記録管理を行う必要がないことです(例外は、反復変数が本当に必要な場合です)。 ひとつは、繰り返し変数に関する記録管理を行う必要がないことです(ただし、本当に繰り返し変数が必要な場合は例外です)。 さらに、 LINQ 固有の利点もすべて利用できます。たとえば、コレクション名の直後に .AsParallel() メソッド呼び出しを追加するだけで、並列化を指定できます。 これにより、PLINQ(Parallel LINQ)を使用するようランタイムに指示し、計算を高速化できます。
2026 年 6 月 12 日