为了账号安全,请及时绑定邮箱和手机立即绑定

切换声明在C#中落后?

切换声明在C#中落后?

C#
千巷猫影 2019-08-15 16:29:39
切换声明在C#中落后?切换声明是我喜爱switch与if/else if构造的个人主要原因之一。这里有一个例子:static string NumberToWords(int number){     string[] numbers = new string[]          { "", "one", "two", "three", "four", "five",            "six", "seven", "eight", "nine" };     string[] tens = new string[]          { "", "", "twenty", "thirty", "forty", "fifty",            "sixty", "seventy", "eighty", "ninety" };     string[] teens = new string[]         { "ten", "eleven", "twelve", "thirteen", "fourteen", "fifteen",           "sixteen", "seventeen", "eighteen", "nineteen" };     string ans = "";     switch (number.ToString().Length)     {         case 3:             ans += string.Format("{0} hundred and ", numbers[number / 100]);         case 2:             int t = (number / 10) % 10;             if (t == 1)             {                 ans += teens[number % 10];                 break;             }             else if (t > 1)                 ans += string.Format("{0}-", tens[t]);         case 1:             int o = number % 10;             ans += numbers[o];             break;         default:             throw new ArgumentException("number");     }     return ans;}聪明的人正在畏缩,因为string[]s应该在函数之外声明:嗯,他们是,这只是一个例子。编译器失败并出现以下错误:控制不能从一个案例标签('案例3:')落到另一个案例标签 控制不能从一个案例标签('案例2:')落到另一个案例标签为什么?有没有办法在没有三个ifs的情况下获得这种行为?
查看完整描述

3 回答

?
牛魔王的故事

TA贡献1830条经验 获得超3个赞

通过下降switchcaseS可通过不具有代码在一个来实现case(见case 0),或者使用特殊的goto case(见case 1)或goto default(见case 2)形式:

switch (/*...*/) {
    case 0: // shares the exact same code as case 1
    case 1:
        // do something
        goto case 2;
    case 2:
        // do something else
        goto default;
    default:
        // do something entirely different
        break;}


查看完整回答
反对 回复 2019-08-15
?
梵蒂冈之花

TA贡献1900条经验 获得超5个赞

交换机漏洞历史上是现代软件中错误的主要来源之一。语言设计者决定强制要求在案例结束时跳转,除非您在没有处理的情况下直接默认为下一个案例。

switch(value){
    case 1:// this is still legal
    case 2:}


查看完整回答
反对 回复 2019-08-15
  • 3 回答
  • 0 关注
  • 366 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信