大部分或所有这些答案都忽略了目的失败(或转到案例):
不必重用代码或只为同一Select Case/If Tree 中的几个区域创建特殊功能,这样您就可以避免重用代码,例如这个 Javascript。
这些示例非常做作。肯定有方法可以简化这种情况,但很多时候没有。
let pay = 100, perks = '';
Switch (EmpObj.type) {
Case 'Boss':
pay = pay * 10;
perks = '11 month vacation per year';
Case 'Manager':
pay = pay * 3; // This will make Boss pay * 30
Case 'Employee':
EmpObj.pay = pay;
EmpObj.perks = perks;
break;
Case 'Intern':
EmpObj.sendMessage("Go get some coffee.")
}
在 VB.net 中,相同的代码将是
dim pay = 100, perks = "";
Switch (EmpObj.type) {
Case "Boss":
pay = pay * 30
perks = "11 month vacation per year"
Case "Manager":
pay = pay * 3
Case "Employee":
Case 'Intern':
pay = 0
EmpObj.sendMessage("Go get some coffee.")
End Select
EmpObj.pay = pay;
EmpObj.perks = perks;
在简单的情况下,case 比比较 if-branch 更容易读写,但 fall-through 是最好的部分。
有一种方法至少现在可以使用在 Visual Basic 2017 中。虽然它不是最漂亮的。
GoTo Case "[label]" 和 Goto [Case-label] 仍然不起作用。
标签(此处为Number2)必须在Case 之后。那是最令人失望的部分。
dim Value = "1"
Select Case Value
Case "0"
' do nothing, example
Case "1"
MsgBox("one")
GoTo Number2
Case "2"
Number2:
MsgBox("two")
Case "boolean"
MsgBox("three")
' just to show it won't fall through
End Select