用C#中的另一个等效行替换break行

时间:2014-12-18 12:04:11

标签: c#

我需要更换休息时间;在不使用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();
}

6 个答案:

答案 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();
}

Demo DotNetFiddle

答案 5 :(得分:0)

 if (i == 50)
   return;

这也应该可以解决问题