我需要更换休息时间;在不使用goto的情况下使用另一条等效行,可能的解决方案是什么?
static void Main(string[] args)
{
int Max = 100;
for (int i = 0; i < Max; i++)
{
Console.Writeline(i);
if (i == 50)
break;
}
Console.ReadLine();
}
答案 0 :(得分:3)
将i
设为Max
if (i == 50)
i = Max;
这将阻止循环运行。它与break
不完全相同。由于它将在if
语句后执行代码,因此您可能需要使用continue
来跳过它。
答案 1 :(得分:1)
由于你突破50,这基本上是可能达到的最大值(仅使用你发布的代码),为什么不简单地将Max
设置为51而不是100?结果会是一样的!
答案 2 :(得分:1)
我真的很喜欢这个愚蠢的采访问题:这有效吗?
static void Main(string[] args)
{
int Max = 100;
for (int i = 0; i < Max; i++)
{
if(i >= 51)
continue;
Console.Writeline(i);
}
Console.ReadLine();
}
答案 3 :(得分:1)
i = Max;
说明:在for循环中操作循环变量(i)是完全合法的。 在循环结束时执行for-chack(i&lt; Max)如果它的计算结果为false,则循环终止
实际上这两个是等价的:
for(int i=0; i < 3; i++)
{
DoSomething(i);
}
将由编译器转换为完全:
i=0;
start:
if(i<3)
{
DoSomething(i);
i++;
goto start;
}
答案 4 :(得分:1)
如果您不必保留&#39;&#39;声明:
static void Main(string[] args)
{
int Max = 100;
for (int i = 0; i <= 50; i++) // stop when i > 50
{
Console.WriteLine(i);
}
Console.ReadLine();
}
或
static void Main(string[] args)
{
int Max = 50;
for (int i = 0; i <= Max; i++) // stop when i > Max
{
Console.WriteLine(i);
}
Console.ReadLine();
}
答案 5 :(得分:0)
if (i == 50)
return;
这也应该可以解决问题