【问题标题】:Go back to second foreach loop回到第二个 foreach 循环
【发布时间】:2015-08-21 11:16:37
【问题描述】:

在执行了一个 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 怎么样?

标签: c# .net


【解决方案1】:

您可以使用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;之后不需要else
【解决方案2】:

break; 在大多数语言中会破坏内循环(在你的情况下跳到外循环)。

【讨论】:

    【解决方案3】:

    break 语句会起作用,因为它只中断内部循环,而不是所有循环。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2014-07-19
      • 2013-11-15
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多