我有4个实体"
ObjectA,ObjectB,ObjectC,ObjectD
foreach(ObjectA objectA in listObjectA)
if (relationAB)
foreach(ObjectB objectB in listObjectB)
if (relationBC)
foreach(ObjectC objectC in listObjectC)
if (relationCD)
foreach(ObjectD objectD in listObjectD)
if (I found what I'm looking for)
Do something
Run Code Online (Sandbox Code Playgroud)
所以,当我找到我要找的东西时,我想要转到第一行,第一行,但是要从列表中找到第二行.我怎样才能做到这一点?惠特转到?
稍后编辑:这个问题适用于C#.
PS你能想到一个更好的方法来做我想要做的事情,而不使用4个人吗?
好吧,因为这只是一个"编程语言"问题,一般的答案是使用你的语言设置来命名循环,然后在"break"语句中加上正确的名称.
遗憾的是,我不认为当前版本的C和C++支持这样的东西,所以你goto在使用它们时确实需要求助于它们.避免这种情况的一个好方法是将你想要突破的循环放入它自己的子程序中,然后return在你完成而不是a时执行break.这就是我在那些糟糕的语言中工作时通常所做的事情.
您修改后的示例如下:
void find_whatever (/* probably pass in the lists or objects to search for*/)
foreach(ObjectA objectA in listObjectA)
if (relationAB)
foreach(ObjectB objectB in listObjectB)
if (relationBC)
foreach(ObjectC objectC in listObjectC)
if (relationCD)
foreach(ObjectD objectD in listObjectD)
if (I found what I'm looking for)
Do something
return;
Run Code Online (Sandbox Code Playgroud)
注意:标签已从"编程语言"更改为"C#".对于这个问题,这是正确的做法,但很多人都喜欢这个答案,所以我不会对它做出重大修改.