我的程序中有以下代码:
#region Handle
if(HandleLink(input))
goto Handled;
else if(HandlePath(input))
goto Handled;
else if(HandleGeneratedLink(input))
goto Handled;
else ...
else
return; // Break if not handled
#endregion
Handled:
我对此不是很满意,因为对我来说,在每一行都使用goto似乎是一种欺骗。 有没有一种常见的方式来编写这样的东西,或者这是一个有效的解决方案吗?
答案 0 :(得分:2)
您也可以这样做:
if (!HandleLink(input) && !HandlePath(input) && !HandleGeneratedLink(input)) {
return;
}
// put the code related to "Handled" here
答案 1 :(得分:1)
您可以这样做:
if (HandleLink(input) || HandlePath(input) || HandleGeneratedLink(input)) {
// put the code below the "Handled" label here
} else {
return;
}
由于||
仅在左操作数为假时才计算右操作数,因此HandlePath()
返回true时将不会调用HandleLink()
。它就像你的if...else if
声明一样工作!
或者,您可以创建一个名为handled
的变量:
var handled = false;
if (HandleLink(input) || HandlePath(input) || HandleGeneratedLink(input)) {
handled = true;
} else {
return;
}
if (handled) {
// move the code below the "Handled" label here.
}
答案 2 :(得分:0)
试试这个
if(HandleLink(input) || HandlePath(input) || HandleGeneratedLink(input))
goto Handled;
else
return;