当前位置: 首页 > 知识库问答 >
问题:

开关箱是否可以像void方法一样使用?

郎正平
2023-03-14

通常我会在返回特定对象的方法中实现switch case。如下所示:

private string testing(string input){
    switch(input)
    {
        case "a":
        {
            ....
            return "TestingResult";
        }
        case "b":
        {
            ....
            return "TestingResultB";
        }
        default:
            return null;
    }
}

现在我想知道是否有可能为价值分配目的编写一个开关案例?像下面这样:

private string testing(string input){
    string TEST="";
    switch(input)
    {
        case "a":
        {
            ....
            TEST = "TestingResult";
        }
        case "b":
        {
            ....
            TEST = "TestingResultB";
        }
        default:
    }
    return TEST;
}

当然,它可以通过简单的If-Else语句来实现,这个问题对我来说是为了理解switch case的更多功能

当然,在测试之后,我收到了错误消息

control cannot fall through from one case label('case: "a"') to another

共有3个答案

居琛
2023-03-14

您所写的内容是完全合法的,但是,除非您在返回之前继续并使用它执行一些进一步的操作,否则执行值赋值是没有意义的。

为了帮助您更加熟练地使用开关/案例语句:

  • 在第一个示例中,您不需要默认值,只需在函数末尾有一个最终返回值
梁丘琛
2023-03-14

是的,你可以。您只需记住在每个案例标签后放置某种类型的“跳跃”语句(包括中断转到案例返回、或抛出):

private string testing(string input){
    string TEST="";
    switch(input)
    {
        case "a":
            TEST = "TestingResult";
            break;
        case "b":
            TEST = "TestingResultB";
            break;
    }
    return TEST;
}

请注意,这里的大括号是不必要的,默认值在这个结构中是不需要的,因为如果它与任何情况不匹配,它将穿过开关块。

进一步阅读

  • 开关(C#参考)
宗政霄
2023-03-14

您需要添加break 在每种情况下

private string testing(string input){
    string TEST="";
    switch(input)
    {
        case "a":
            TEST = "TestingResult";
            break;
        case "b":
            TEST = "TestingResultB";
            break;
        default:
    }
    return TEST;
}

正如其他人所提到的,每个案例中的大括号都是不必要的。

 类似资料:
  • 问题内容: 我需要一个允许部分匹配的case语句。我收到语法错误,但想知道是否有可能这样做。如果没有,我的第二个解决方案是将其重写为游标…示例: 问题答案: 试试这个 你可以运行的例子

  • 问题内容: 我正在阅读PDF并输出其中包含原始PDF的多个副本的PDF。我通过对PDFBox和iText做同样的事情来进行测试。如果我分别复制每个页面,iText会创建一个较小的输出。 问题: 在PDFBox中还有另一种方法可以使输出的PDF变小。 对于一个示例输入文件,使用两个工具生成两个副本到输出: 原始PDF大小:30K PDFBox(v 1.7.1)生成的PDF:84K iText(v 5

  • 问题内容: 我正在使用Python编写的GTK +应用程序。我显然使用PyGtk。我的应用程序是关于视频集合的。这是F点或Picasa,但用于视频。 正如您在这两个应用程序中看到的那样,您在中心区域可以看到所有带有标签缩略图的照片。 在我的应用程序中,我想实现相同的视图。现在,我仅使用以下代码: 一个包含一个,里面一个(我的视频缩略图)和和内,尽可能多的标签。 它正在工作,但是很丑陋,看来这不是更

  • 问题内容: 我正在测试一个小的搜索功能: 但是我遇到了一个我似乎无法解决的错误。您可以在此处查看PDO查询: 如您所见,我正在尝试从查询中绑定参数,但是我不知道这是否真的可能吗? 我收到错误: 未捕获的异常“ PDOException”,消息为“ SQLSTATE [42000]:..... 而且我可以在错误中看到’‘已放在test1%’test1’%附近 我正在尝试的可能吗,还是我需要做类似的事

  • dagger2是否可以和Guice一样与jersey一起使用? 是否有任何dagger2 servlet或dagger2 jersey项目?

  • 问题内容: 我正在Scala中开发JavaFX8应用程序,但无法弄清楚如何将方法引用传递给事件处理程序。为了澄清,我没有使用ScalaFX库,而是直接在JavaFX之上构建我的应用程序。 这是相关的代码片段。 InputController.java (我用Java编写了此测试类,以隔离问题以仅使用方法参考) 这有效(Java) 这不起作用(Scala) 这是来自编译器(Scala 2.11.6)