ReSharper 2025.2 Help

代码检查:循环可以转换为 LINQ 表达式

当 ReSharper 确定您正在使用 IEnumerablefor 循环进行迭代时,它可能会建议将此循环转换为 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()

但这种方法的优势是什么? 一个优势是,您不必进行与迭代变量相关的记录(除非确实需要迭代变量的情况)。 此外,您还可以享受所有 LINQ 特定的好处——例如,您只需在集合名称后添加 .AsParallel() 方法调用,就可以请求使用并行化。 这将指示运行时使用 PLINQ(并行 LINQ),从而加快计算速度。

最后修改日期: 2025年 9月 27日