将断线替换为 C# 中的另一个等效行
本文关键字:另一个 断线 替换 | 更新日期: 2023-09-27 18:34:44
我需要在不使用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();
}
将i
设置为 Max
if (i == 50)
i = Max;
这将阻止循环运行。它与break
不完全相同.由于它将在 if
语句之后执行代码,因此您可能需要使用 continue
跳过它。
既然你在 50 处突破,这基本上是可能达到的最大值(仅使用你发布的代码(,你为什么不简单地将Max
设置为 51 而不是 100?结果是一样的!
我真的很喜欢这个愚蠢的面试问题:这有效吗?
static void Main(string[] args)
{
int Max = 100;
for (int i = 0; i < Max; i++)
{
if(i >= 51)
continue;
Console.Writeline(i);
}
Console.ReadLine();
}
i = Max;
说明:在 for 循环中操作循环变量 (i( 是完全合法的。在循环结束时,如果 for-chack 的计算结果为 false,则执行 for-chack (i <Max(,则循环终止>
事实上,这两者是等价的:
for(int i=0; i < 3; i++)
{
DoSomething(i);
}
将由编译器精确转换为:
i=0;
start:
if(i<3)
{
DoSomething(i);
i++;
goto start;
}
如果您不必保留"if"语句:
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();
}
演示点网小提琴
if (i == 50)
return;
这也应该可以解决问题