我看过一个建议的编码标准,内容是Never use goto unless in a switch statement fall-through
。
我不听。这种“异常”情况到底是什么样子,可以证明 goto
是正确的?
最佳答案
此构造在 C# 中是非法的:
switch (variable) {
case 2:
Console.WriteLine("variable is >= 2");
case 1:
Console.WriteLine("variable is >= 1");
}
在 C++ 中,如果 variable = 2
,它会运行这两行。这可能是有意的,但很容易忘记第一个 case 标签末尾的 break;
。出于这个原因,他们在 C# 中将其设为非法。要模仿跌倒行为,您必须明确使用 goto
来表达您的意图:
switch (variable) {
case 2:
Console.WriteLine("variable is >= 2");
goto case 1;
case 1:
Console.WriteLine("variable is >= 1");
break;
}
也就是说,有a few cases goto
实际上是解决问题的好方法。 Never shut down your brain与“永远不要使用某些东西”的规则。如果它 100% 没用,那么它一开始就不会存在于语言中。不要使用 goto
是一个指南;这不是法律。
关于c# - 在交换机中使用 'goto'?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4756084/