GOTO 在 C# 中是如何工作的
how GOTO works in c#
我在 c# winform 中有一个 for 循环,如果 i=7
我想再次开始 for 循环
代码如下所示:
for (int i = 0; i < 10; i++)
{
if (i==7)
{
MessageBox.Show("you must start for loop again ");
//here I want to go back to for loop again
}
}
有什么想法吗?
另外,我知道这段代码没有意义,我只是写了它作为例子 — 我在我的 c# 代码中有类似的情况。
在这种情况下,只需将 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# 从昔日的 C 风格语言中带来的不受欢迎的遗留包袱。在大多数情况下你不需要它,就像在这个例子中,不使用它更容易。而且,最重要的是,没有人会感谢您添加 goto
.
值得注意的是,这将是一个无限循环。想一想:如果每次 i
达到 7 时都回到 0,那么它怎么会赌 i == 10
的情况呢?你会如何跳出循环?这可能是 XY problem 的情况 - 即您可能 实际上 不想做您在这里说您想做的事情。
如果您真的希望它发生在无限循环中,只需这样做:
while (true) {
for (int i = 0; i <= 7; i++) {
if (i == 7) {
// ..
}
}
}
实际上,如果您只是在 i = 7
的情况下做某事,我有点困惑为什么在这种情况下您根本不用 "for" 循环;为什么要费心使用 for 循环,而只是将操作置于无限循环中?
此外,如果您在 UI 线程上执行此操作,它会出现在 "hang" 和 UI 中,因为 UI 线程永远不会除了为您的 for 循环提供服务之外,能够做任何事情。用户甚至无法正常关闭它。
最后,正如其他人指出的那样,从不 使用 goto
,这是一种不好的做法 - Microsoft 甚至不应该将其包含在语言中。
我在 c# winform 中有一个 for 循环,如果 i=7
我想再次开始 for 循环代码如下所示:
for (int i = 0; i < 10; i++)
{
if (i==7)
{
MessageBox.Show("you must start for loop again ");
//here I want to go back to for loop again
}
}
有什么想法吗?
另外,我知道这段代码没有意义,我只是写了它作为例子 — 我在我的 c# 代码中有类似的情况。
在这种情况下,只需将 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# 从昔日的 C 风格语言中带来的不受欢迎的遗留包袱。在大多数情况下你不需要它,就像在这个例子中,不使用它更容易。而且,最重要的是,没有人会感谢您添加 goto
.
值得注意的是,这将是一个无限循环。想一想:如果每次 i
达到 7 时都回到 0,那么它怎么会赌 i == 10
的情况呢?你会如何跳出循环?这可能是 XY problem 的情况 - 即您可能 实际上 不想做您在这里说您想做的事情。
如果您真的希望它发生在无限循环中,只需这样做:
while (true) {
for (int i = 0; i <= 7; i++) {
if (i == 7) {
// ..
}
}
}
实际上,如果您只是在 i = 7
的情况下做某事,我有点困惑为什么在这种情况下您根本不用 "for" 循环;为什么要费心使用 for 循环,而只是将操作置于无限循环中?
此外,如果您在 UI 线程上执行此操作,它会出现在 "hang" 和 UI 中,因为 UI 线程永远不会除了为您的 for 循环提供服务之外,能够做任何事情。用户甚至无法正常关闭它。
最后,正如其他人指出的那样,从不 使用 goto
,这是一种不好的做法 - Microsoft 甚至不应该将其包含在语言中。