C#在中间重启一个while循环

时间:2017-06-22 07:26:23

标签: c# loops while-loop

在我的情况下,如果条件为false,我有一个我想重启的while循环。这是因为我正在检查ip是否有效以及是否然后运行整个循环正常,如果不是,我需要它从那时开始重新启动。我不能使用休息时间,我不想使用goto。你的sugestions是什么?

这是我的代码,我想重新启动while循环。

while (calculateAgain == "y")
{
    Console.Write("Your ip here: ");
    string ip = Console.ReadLine();

    IpValidation(ip);
    if (IpValidation(ip) == false)
    {
        Console.WriteLine("Ugyldig IP og eller Subnet mask!\n");
        // goto or break
    }

在此之后我的代码运行了很多... 除了转到之外,请告诉我一些解决方案。

3 个答案:

答案 0 :(得分:7)

您需要使用continue

这个词
    if (IpValidation(ip) == false)
    {
        Console.WriteLine("Ugyldig IP og eller Subnet mask!\n");
        continue;
    }

这将跳过剩下的部分并转到循环的顶部。

答案 1 :(得分:4)

有继续声明。如果它被击中它将跳回到循环的开始。

while (calculateAgain == "y")
{
    // ...
    if (IpValidation(ip) == false)
    {
        Console.WriteLine("Ugyldig IP og eller Subnet mask!\n");
        continue;
    }
    Console.WriteLine("This will not be executed when continue is called");
}

答案 2 :(得分:3)

您可以通过两种方式执行此操作(通过使用break或continue)break将完全退出循环,continue将跳过当前迭代。

通过阅读你的问题。您需要在此处使用while (calculateAgain == "y") { Console.Write("Your ip here: "); string ip = Console.ReadLine(); IpValidation(ip); if (IpValidation(ip) == false) { Console.WriteLine("Ugyldig IP og eller Subnet mask!\n"); continue; } } ,因此您的示例可能如下所示:

if (IpValidation(ip) == false)

以上意思是,对于条件{{1}},如果满足条件,下面的代码将被删除(永远不会被执行)