打破 foreach 与条件检查
Breaking a foreach vs condition check in for
就更好的编码实践而言,哪个是更好的决定?
- 在foreach中使用
break
跳出循环
- 在 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"))
{
}
就更好的编码实践而言,哪个是更好的决定?
- 在foreach中使用
break
跳出循环 - 在 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"))
{
}