在执行if语句之后继续外循环的最优雅方法是什么?我知道我可以使用goto
,但我想避免使用它。
foreach (var pair in firstStrings)
{
foreach (var pair2 in secondStrings)
{
if (secondStrings.ContainsKey(pair.Key))
{
LogMessage(
pair.Value + " <----------> " + pair2.Value + " On Line " + (int)(pair.Key.Item1 + 1));
}
if (!(secondStrings.ContainsKey(pair.Key)))
{
LogMessage(
pair.Value + "Missing data " + " on line " + (int)(pair.Key.Item1 + 1) + " in file " + " " +
Path.GetFileName(pathTwo));
}
if (!(firstStrings.ContainsKey(pair2.Key)))
LogMessage(
pair2.Value + "Missing data " + " on line " + (int)(pair2.Key.Item1 + 1) + " in file " + " " +
Path.GetFileName(pathOne));
}
}
答案 0 :(得分:3)
您可以使用break
。它打破了你现在所处的循环。
另外,在您的情况下,您应该使用else if
而不是多个if
。
foreach (var pair in firstStrings)
{
foreach (var pair2 in secondStrings)
{
if (secondStrings.ContainsKey(pair.Key))
{
LogMessage(
pair.Value + " <----------> " + pair2.Value + " On Line " + (int)(pair.Key.Item1 + 1));
break;
}
else if (!(secondStrings.ContainsKey(pair.Key)))
{
LogMessage(
pair.Value + "Missing data " + " on line " + (int)(pair.Key.Item1 + 1) + " in file " + " " +
Path.GetFileName(pathTwo));
break;
}
else if (!(firstStrings.ContainsKey(pair2.Key)))
{
LogMessage(
pair2.Value + "Missing data " + " on line " + (int)(pair2.Key.Item1 + 1) + " in file " + " " +
Path.GetFileName(pathOne));
break;
}
}
}
答案 1 :(得分:1)
break;
将在大多数语言中打破内部循环(在您的情况下跳转到外部循环)。
答案 2 :(得分:1)
break语句可以工作,因为它只会破坏内部循环,而不是所有循环。