打破foreach vs条件检查

Jus*_*tin 0 c# loops coding-style

在更好的编码实践方面,这是一个更好的决策?

  1. break在foreach中使用a 跳出循环
  2. 在for循环中使用条件检查来结束循环

例如,使用foreach:

foreach(string bean in stringArray)
{
    if(bean == "green")
    {
        break;
    }
}
Run Code Online (Sandbox Code Playgroud)

以及for循环的示例:

bool found = false;
for (int i = 0; i < stringArray.Length && !found; i++)
{
    if (stringArray[i] == "green")
    {
        found = true;
    }
}
Run Code Online (Sandbox Code Playgroud)

Ser*_*rvy 5

只是将机制完全抽象为另一种方法.

(在这种情况下,.NET已经有了这样的方法,所以你不需要写一个.)

如果您想确定是否有任何项目符合此条件:

var found = stringArray.Any(bean => bean == "green");
Run Code Online (Sandbox Code Playgroud)

如果您想获得所有项目,直到满足条件:

var query = stringArray.TakeWhile(bean => bean != "green");
Run Code Online (Sandbox Code Playgroud)

或者如果你只想对每个上述项目采取行动:

foreach(var bean in stringArray.TakeWhile(bean => bean != "green"))
{

}
Run Code Online (Sandbox Code Playgroud)