打破 foreach 与条件检查

Breaking a foreach vs condition check in for

就更好的编码实践而言,哪个是更好的决定?

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

例如使用foreach:

foreach(string bean in stringArray)
{
    if(bean == "green")
    {
        break;
    }
}

以及带有 for 循环的示例:

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

只需将机制完全抽象为另一种方法。

(这样的话,.NET已经有这样的方法了,不用再写了)

如果要判断是否有满足此条件的项目:

var found = stringArray.Any(bean => bean == "green");

如果你想获得所有物品直到满足条件:

var query = stringArray.TakeWhile(bean => bean != "green");

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

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

}