代码检查: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日