我刚刚开始一个职位,在工作日结束时,我会慢慢阅读我们的代码库来等待交通。我碰到了这一点,即使在白板上花了相当长的时间后,我仍然想不出提取goto
的方法。有没有办法消除这种跳跃?
public void MyUpdate(MyType foo)
{
/*Prep code for the loops*/
foreach (Thing bar in something)
{
foreach (Collection item in bar.Stuff)
{
Data dataRX = item.First;
if (dataRX != null && dataRX.ID.Equals(globalNonsense.ID))
{
// Update Data with the latest changes
dataRX.fooBuddy = foo;
goto exitLoops;
}
}
}
exitLoops: ;
}
最佳答案
由于标签exitLoops
位于方法的末尾,因此您可以简单地使用return
退出该方法,如下所示:
if (dataRX != null && dataRX.ID.Equals(globalNonsense.ID))
{
// Update Data with the latest changes
dataRX.fooBuddy = foo;
return;
}
另一种方法是使用这样的标志:
bool done = false;
foreach (Thing bar in something)
{
foreach (Collection item in bar.Stuff)
{
Data dataRX = item.First;
if (dataRX != null && dataRX.ID.Equals(globalNonsense.ID))
{
// Update Data with the latest changes
dataRX.fooBuddy = foo;
done = true;
break;
}
}
if(done)
break;
}
即使标签后面有一些代码,也可以使用第二种方法。