如何实现这样的代码:如果“if”语句为真,则跳过foreach循环下面的代码并继续执行程序的其余部分?
void()
{
foreach()
{
if()
{
}
}
//code I want to skip if "if" statement is true
}
如何实现这样的代码:如果“if”语句为真,则跳过foreach循环下面的代码并继续执行程序的其余部分?
void()
{
foreach()
{
if()
{
}
}
//code I want to skip if "if" statement is true
}
如果不使用“goto”标签(可恶的东西!),则没有直接实现您想要的方法,但是您可以使用“break”关键字,并设置一个变量,以便以后可以引用它。
void()
{
var testWasTrue = false;
foreach()
{
if()
{
testWasTrue = true;
break; // break out of the "foreach"
}
}
if( !testWasTrue ) {
//code I want to skip if "if" statement is true
}
}
我知道这个问题已经有答案了,但是考虑到没有人将检查过程抽象成一个单独的方法,所以我想加入我的意见:
void()
{
if (ShouldDoStuff(myCollection))
DoStuff(myCollection);
else
DoOtherStuff(myCollection);
}
private bool ShouldDoStuff(collection)
{
foreach()
{
if ()
return true;
}
return false;
}
void()
中干净地分离检查和执行任务,读者立即知道程序流程,而无需识别布尔值或中断逻辑。没有单个方法具有超过1个责任或任务。DoStuff
和DoOtherStuff
没有抽象成自己的方法,它也提供了更好的可读性和逻辑流程。'break'关键字将会跳出循环。
foreach (someClass a in someArray)
{
if(a.someProperty) // bool property
{
//Stuff to do if that condition is true
doSomethingElse();
//Calling the break keyword will stop the loop and jump immediately outside of it
break;
}
//Other code to run for each iteration of the loop
}
//Here is where execution will pick up either after break is called or after the loop finishes
void()
{
bool process = true;
foreach()
{
if()
{
process = false;
break;
}
}
if (process)
{
//code I want to skip if "if" statement is true
}
}
正如我在评论中提到的那样,您可以通过额外的布尔变量来实现这一点。
void()
{
bool positiveResult; // by default it gets false value
foreach()
{
if()
{
positiveResult = true;
// you may use "break" to skip the loop
break;
}
}
if( !positiveResult )
{
//code I want to skip if "if" statement is true
}
}
void()
{
bool skip = false;
foreach()
{
if()
{
skip = true;
}
}
if(!skip)
{
//code I want to skip if "if" statement is true
}
}
我知道的唯一方法是使用布尔标志。
void()
{
bool x = false;
foreach()
{
if()
{
x = true;
break;
}
}
if(!x)
{
//Code to skip if "if" statement is true.
}
}
不是非常优雅,但很容易。 编辑:被12秒打败了 :)
如果您正在迭代的集合包含IEnumerable接口,您可以使用带有Lambda的Any()方法!
int[] myArray = { 1, 2, 3 };
if( myArray.Any((a) => a == 1) )
{
return;
}
这段代码的意思是:如果我的数组中包含任何一个值 a,且该值等于 1,则退出此函数。
如果你想让它更难读懂,可以省略花括号。
if( myArray.Any((a) => a == 1) )
return;