从同一开关中的案例跳转 vb.net

Jump from Cases in the same switch vb.net

我正在构建游戏,我需要从案例跳到另一个案例。例如,如果玩家在方框 5 中,则化身需要移动到方框 9。非常感谢任何帮助。`

            Case 5
                OBJETO_ATERIOR = R4
                OBJETO_ACTUAL = R5
                OBJETO_ANTERIOR_INVERSO = R6

                'needs to jumpo to Case 9


                gif_loro.Visible = False
                gif_puppy.Visible = False
                gif_mono.Visible = False
                gif_oca5.Visible = True`

请花时间阅读有关 [mcve] 的内容。就目前而言,您提供的代码似乎与您的问题无关。

尽管猜测答案,您可以将 Case 9 块中的代码提取到它自己的 Sub 中,并从 Case 9 块和 [= 中的适当点调用它15=] 块。一个不优雅的解决方案,但它可能是您唯一的选择。

所以看一个例子,假设你的代码看起来像这样

Select Case x
    Case 1
        'case 1 code
    Case 2
        'case 2 code
    Case 3
        'case 3 code
    Case 4
        'case 4 code
    Case 5
        'case 5 code
        'jump to case 9 code
    Case 6
        'case 6 code
    Case 7
        'case 7 code
    Case 8
        'case 8 code
    Case 9
        'case 9 code
End Select.

您可以像这样在 Case 9 块中创建一个包含您的代码的子程序

 Private Sub Case9Code()
    'case 9 code
End Sub

现在您可以将 Select Case 块重写为 ..

Select Case x
    Case 1
        'case 1 code
    Case 2
        'case 2 code
    Case 3
        'case 3 code
    Case 4
        'case 4 code
    Case 5
        'case 5 code
        Case9Code()
    Case 6
        'case 6 code
    Case 7
        'case 7 code
    Case 8
        'case 8 code
    Case 9
        Case9Code()
End Select.

如果我得到了你想要的东西,那就是 goto 语句(在 VB.NET 中不可用)。这也表明设计不佳,反过来我可以提供重构的想法。

播放器对象可以包含一个 move 子对象,它在移动 space 时被调用。此 move 也可以引发事件。 avatar 对象可以包含一个 moveListener sub,它侦听要引发的 move 事件,并有一个 switch 语句来确定如何处理 avatar 移动。由于 VB.NET 事件可以包含参数,所以玩家移动到的 space 可以包含在参数中;因此产生了一个事件处理设计,其中玩家移动被视为一个事件并且化身 对其做出反应