你能以编程方式调用 switch-case 中的特定 case 吗?

Can you programmatically call upon a specific case in a switch-case?

我有一个开关盒,看起来像这样:

switch ( class.Function() )
{

    case firstThing:
    {

    }
        break;
    case secondThing:
    {
     //call third thing
     }
     break;
    case thirdThing:
    {

     }
     break;

    }

有什么方法可以在 C 中调用特定的 case / Objective-C?

不知道您为什么要这样做,但在您的示例中,如果您只是在 case secondThing 的末尾省略 break 语句:用户将继续执行后续的 case 语句,直到他们点击休息。

看来您要实现的是 switch 语句失败。通过在案例 #2 之后省略 break 语句,您将执行案例 #3 中的任何代码。这可能就是你想要的。

switch ( class.Function() )
{

    case firstThing:
    {

    }
        break;
    case secondThing:
    {
     //go to case 3
    }

    case thirdThing:
    {

    }
     break;

    }

在您的特定示例中,您可以使用 case fall through,但这不是您问题的一般解决方案,如果有特定于 secondThing 的代码,它可能会导致混淆并且可能是被认为是不好的做法。

switch ( class.Function() )
{
    case firstThing:
    {

    }
    break;

    case secondThing:
    case thirdThing:
    {

    }
    break;
}

如果您只是将每个案例的主体实现为一个函数,那么这可能是更通用的解决方案:

switch( class.Function() )
{
    case firstThing:  something();                     break;
    case secondThing: anotherThing(); oneMoreThing();  break;
    case thirdThing:  oneMoreThing();                  break;
}