GOTO如何在c#中运行

时间:2017-01-15 19:28:07

标签: c# winforms goto

我在c#winform中有一个 for loop ,如果 i = 7

,我想再次启动循环

代码如下所示:

<View style={{borderWidth: 1}}/>
  <Text>A DIFFERENT EXPERIENCE</Text>
</View>

任何想法?

另外,我知道这段代码没有意义,我只是写了它的例子 - 我的c#代码中有类似的情况。

2 个答案:

答案 0 :(得分:5)

在这种情况下,只需将i变回0,就像这样:

for (int i = 0; i < 10; i++)
{
    if (i==7)
    {
        MessageBox.Show("you must start for loop again ");
        i = 0;
    }
}

如果你真的想使用goto,那么这是一个例子:

BackToTheStart:
  for (int i = 0; i < 10; i++)
  {
      if (i==7)
      {
          MessageBox.Show("you must start for loop again ");
          goto BackToTheStart;
      }
  }

值得记住的是,如果您还不知道,goto通常被认为是不良行为,并且从过去的C风格语言中带来了不受欢迎的传统行李。在大多数情况下,您不需要它,就像在此示例中一样,更容易不使用它。而且,最重要的是,没有人会感谢您添加goto

答案 1 :(得分:0)

值得注意的是,这将是一个无限循环。想一想:如果你每次i达到7时回到0,那么i == 10的情况怎么样?你怎么打破循环?这可能是XY problem的情况 - 也就是说,你可能 想要做你想做的事情。

如果你真的希望在无限循环中发生这种情况,那就这样做:

while (true) {
   for (int i = 0; i <= 7; i++) {
       if (i == 7) {
           // ..
       }
    }
 }

实际上,如果你只是在i = 7的情况下做某事,那么在这种情况下你为什么要打扰“for”循环,我感到有些困惑。为什么要干扰for循环并将动作置于无限循环中?

此外,如果您在UI线程上执行此操作,它似乎会“挂起”UI,因为除了为for循环提供服务之外,UI线程将无法执行任何操作。用户甚至无法正常关闭它。

最后,正如其他人所指出的那样,从不使用goto,这是一种不好的做法 - 微软甚至不应该将其包含在语言中。