如何在此停止使用goto
:
if(true)
{
goto ln1;
}
DialogResult b=DialogResult.Yes;
while(b==DialogResult.Yes){
//Stuff
ln1: Function();
}
因为明显不允许使用从一个范围到另一个范围的goto。(它给出了一个错误)。 那么我该怎么做呢?我需要进入第二行代码,而不是第一行。
答案 0 :(得分:3)
如果您想在没有初步检查条件的情况下进入循环,请使用do ... while
循环。
示例:
DialogResult b;
do {
b = ShowDialog(myYesNoDialog);
} while(b == DialogResult.Yes);
如果要根据条件使用初始检查或不使用,请使用布尔变量:
bool skipCondition = (some condition);
DialogResult b = DialogResult.Yes;
while (skipCondition || b == DialogResult.Yes) {
skipCondition = false;
b = ShowDialog(myYesNoDialog);
}
答案 1 :(得分:1)
不要使用goto
标签; goto
会使您的代码变得非常复杂!我认为你必须重新思考课程设计和功能工作流程
非常有用的链接:'Goto' is this bad?
var runFlag = false;
if (true)
{
runFlag = true;
}
DialogResult b = DialogResult.Yes;
while (b == DialogResult.Yes || runFlag)
{
Function();
}
答案 2 :(得分:0)
似乎是这样的:
DialogResult b=...; // must be initialized - it's not correct to skip that
if(true)
{
// goto ln1;
} else {
b=DialogResult.Yes;
}
do
{
/*ln1:*/ Function();
}
while(b==DialogResult.Yes);
答案 3 :(得分:0)
你确实意识到你的代码会跳过很多行,所以程序实际上不会编译让lone运行吗? 你所写的内容与
相同 do
{
Function();
}while(b==DialogResult.Yes)
要使其有效,您需要执行
DialogResult b = DialogResult.Yes;
首先