首页 > 后端开发 > C++ > C# switch 语句会失败吗?如果会,怎么办?

C# switch 语句会失败吗?如果会,怎么办?

Linda Hamilton
发布: 2025-01-03 14:26:46
原创
875 人浏览过

Can C# Switch Statements Fall Through, and If So, How?

C# 中的 Switch 语句失败

switch 语句提供了一种根据指定变量的值执行不同代码的方法。虽然 switch 语句比 if/else if 结构有几个优点,但它的局限性之一是无法从一种情况切换到另一种情况。

在 C# 中,编译器强制执行“无失败”规则,这意味着当到达一个 case 时,执行必须跳转到下一个 case 的开始。此行为可确保代码清晰并防止无意执行多种情况。

考虑以下示例,我们尝试使用 switch 语句将数字转换为其单词表示形式:

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");
}
登录后复制

When执行此代码,编译器将生成错误,指示“控制无法从一个 case 标签 ('case 3:') 落入另一个”和“Control 无法从一个 case 标签 ('case 3:') 落入” 2:') 到另一个。”

要在 C# 中实现失败行为,可以采用以下技术:

  1. 空案例:人们可以创建一个空箱子强制失败。例如,上例中的 case 0: 可以替换为空 case。
  2. Goto Case: goto case 语法允许显式失败。例如,可以使用 goto case 2;在案例 1 结束时:进入案例 2:在给定的示例中。
  3. 转到默认值: 类似地,转到默认值;可用于跌落到默认情况。

需要注意的是,不建议跌落到默认情况,因为它可能会创建不清晰且容易出错的代码。当需要检查多个条件时,通常更好的做法是使用 if/else 或其他条件结构。

以上是C# switch 语句会失败吗?如果会,怎么办?的详细内容。更多信息请关注PHP中文网其他相关文章!

来源:php.cn
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
作者最新文章
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板