【发布时间】:2020-12-19 21:58:15
【问题描述】:
我不确定如何解释这一点,也无法在任何地方找到答案。我有一个 for 循环,它遍历通过字符串表示的行。
for (int i = 0; i < dataLines.Length; i++)
{
jumpPoint:
Debug.Log("Jumped");
string[] words = dataLines[i].Split();
.
.
. "words[] manipulation and reading"
.
.
}
我的任何数据处理或循环中发生的事情都没有问题。
但是我有一个实例,我需要转到以前的 dataLine[] 并从该点继续(也重新运行自该点以来已经运行的代码)。
我所做的基本上归结为
i = ?; //arbitrary number for the situation that is definitely not out of bounds for the loop
goto jumpPoint;
我也尝试过不使用跳转点,也只是在重置 for 循环索引后让循环循环到下一个。
我知道跳转点不是问题,因为它用于无关的事情,并且跳转工作正常。还值得一提的是,在这些情况下,我正在增加 i 索引,因此 for 循环过早推进并且效果很好。
那么为什么我不能在循环中倒退呢?这只是不可能的事情吗?
【问题讨论】:
-
这听起来像是一个糟糕的设计。您所描述的是邀请无限循环发生。换句话说,如果您需要循环回到较低的索引,那么听起来您需要一种不同类型的循环,比如可能是
while循环。不知道你想要达到的“什么”很难说。 -
@JohnG 我应该澄清一下。我正在为我正在制作的游戏编写一种简单的伪语言。如果用户编写的程序会导致这种情况,我希望发生无限循环的可能性。该代码位于其自己的小区域中,并带有检查,因此可以在维护整个程序的同时关闭无限运行的代码(我已经以不同的风格实现了)。我的问题需要的是伪语言中的“goto”类型语句。
-
如果那是不可行的,或者只是行不通,我会废弃它的那一部分,因为它在宏伟计划中并不是完全必要的。