回到第二个foreach循环

时间:2015-08-21 11:16:38

标签: c# .net

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

3 个答案:

答案 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语句可以工作,因为它只会破坏内部循环,而不是所有循环。