ReSharper 2025.2 Help

代码检查:For 循环可以转换为 foreach 循环

当您遍历一个集合而不修改它或访问迭代变量时,可以使用 foreach 代替 for 循环。 foreach 循环的主要好处是它允许创建可以处理不同集合类型的方法。 foreach 循环支持任何实现了 IEnumerable<T> 接口的类型(实际上,任何具有 GetEnumerator 方法的类型)。 此外,使用 foreach 可以处理 LINQ 查询结果,因为许多 LINQ 提供程序将查询结果返回为 IEnumerable<T>

如果您有一个在 for 循环中迭代 List 的方法,有一天您可能会决定让您的方法适用于其他集合类型。 然后,您将需要使用 foreach 以便能够迭代 IEnumerable<T> 对象。

在下面的示例中,ReSharper 确定可以使用 foreach 代替 for ,并建议这样做:

public void ViewCategories(List<string> categories) { for (int i = 0; i < categories.Count; i++) { Console.WriteLine(categories[i]); } }
public void ViewCategories(List<string> categories) { foreach (string c in categories) { Console.WriteLine(c); } }

换句话说,如果您使用 foreach ,方法可以用于更广泛的集合类型,因为您可以将 IEnumerable<T> 传递给它。 以下是此类方法的一个简单示例:

public void ViewCategories(IEnumerable<string> mycollection) { foreach (var s in mycollection) { Console.WriteLine(s); } }
最后修改日期: 2025年 9月 27日