我被要求对某些C#代码进行维护工作,据说这些C#代码最初是从Visual Basic 6转换而来的。(之所以提到此,只是因为我不了解VB6,所以我不知道它是否会做得更多。那种语言的意义。
它有一个for循环,可通过使用for循环内的开关来解析某些文本,以获取专有脚本语言。。。
for ( t = 0; t < upperBound(tokens); t++)
{
String mystring = tokens[t];
switch (mystring)
{
case "GOTO":
if (firstGoto == -1)
{
firstGoto = t;
}
else
{
// compute number of tokens in GOTO
pointLength = t - firstGoto - 1;
break; // exit for
}
break;
case "ACTUATE"
. . .
注意评论
// exit for
程序员希望break会退出for循环,但我认为它只会退出switch语句,因为break的文档说
break语句终止出现的最接近的封闭循环或switch语句。控制权将传递给终止语句之后的语句(如果有)。
因此,我是否正确地说这将仅退出开关,但仍处于for中,如果是,那么执行原始程序员意图的正确方法是什么?
是的,中断将打破最近的循环或切换。最简单的方法是使用goto。(不,goto不是邪恶的)
for {
switch(...) {
....
goto MyLabel;
}
}
MyLabel:
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句