2017-06-22 47 views
2

我有一个while循环,我想在条件为false的情况下重启,在我的情况下。这是因为我正在检查一个IP是否有效,如果它是正常运行整个循环,如果没有,我需要它从那个时候重新开始重新启动。我不能休息,我不想使用转到。你有什么要求?C#在中间重启一个while循环

这是我的代码,我想要重启我的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 
    } 

在此之后我的代码上很多运行... 告诉我不是转到这个其他的一些解决方案。

+0

尝试'继续'如果你想循环从顶部继续。 – Enigmativity

回答

7

你需要用“继续”

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

这将跳过休息,去你的循环的顶部。

+2

记住大小写敏感性:'continue'是正确的。 –

+0

它的工作!我之前尝试过,但它没有工作,然后我发现,我有超过1休息,并改变他们所有...和voula – Scripto

+2

愚蠢的手机汽车uppercased它:( – BugFinder

4

有continue语句。如果它将被击中,它将跳回到循环的开始。

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"); 
} 
3

您可以在两种方式,(用break或继续)突破将退出循环完全,continue将只跳过当前迭代做到这一点。

所以通过阅读你的问题。这里需要使用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)代码将在下面skiped(永远不会被执行),如果满足条件

+1

记住大小写敏感性:'continue'是正确的一。 – Enigmativity