每个循环回到第二个循环

本文关键字:循环 第二个 | 更新日期: 2023-09-27 18:09:09

在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));
            }
        }

每个循环回到第二个循环

您可以使用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;
        }
    }
}

break;将在大多数语言中打破内循环(在您的情况下跳出外循环)。

break语句可以工作,因为它只中断内部循环,而不是所有循环。