Tutorialsteacher

关注我们

文章
  • C#
  • C# 面向对象编程
  • ASP.NET Core
  • ASP.NET MVC
  • LINQ
  • 控制反转 (IoC)
  • Web API
  • JavaScript
  • TypeScript
  • jQuery
  • Angular 11
  • Node.js
  • D3.js
  • Sass
  • Python
  • Go 语言
  • HTTPS (SSL)
  • 正则表达式
  • SQL
  • SQL Server
  • PostgreSQL
  • MongoDB
  • C# - 入门
  • C# - 版本历史
  • C# - 第一个程序
  • C# - 关键词
  • C# - 类和对象
  • C# - 命名空间
  • C# - 变量
  • C# - 隐式类型变量
  • C# - 数据类型
  • 数字
  • 字符串
  • DateTime
  • 结构体
  • 枚举
  • StringBuilder
  • 匿名类型
  • 动态类型
  • 可空类型
  • C# - 值类型和引用类型
  • C# - 接口
  • C# - 运算符
  • C# - if else 语句
  • C# - 三元运算符 ?
  • C# - Switch 语句
  • C# - For 循环
  • C# - While 循环
  • C# - Do-while 循环
  • C# - 分部类
  • C# - Static 关键字
  • C# - 数组
  • 多维数组
  • 交错数组
  • C# - 索引器
  • C# - 泛型
  • 泛型约束
  • C# - 集合
  • ArrayList
  • List
  • SortedList
  • Dictionary
  • Hashtable
  • Stack
  • Queue
  • C# - 元组
  • C# - 值元组
  • C# - 内置异常
  • 异常处理
  • throw 关键字
  • 自定义异常
  • C# - 委托
  • Func 委托
  • Action 委托
  • Predicate 委托
  • 匿名方法
  • C# - 事件
  • C# - 协变
  • C# - 扩展方法
  • C# - 流 I/O
  • C# - File 类
  • C# - FileInfo 类
  • C# - 对象初始化器
  • OOP - 概述
  • 面向对象编程
  • 抽象
  • 封装
  • 关联与组合
  • 继承
  • 多态
  • 方法重写
  • 方法隐藏
  • C# - SOLID 原则
  • 单一职责原则
  • 开闭原则
  • 里氏替换原则
  • 接口隔离原则
  • 依赖倒置原则
  • 设计模式
  • 单例模式
  • 抽象工厂模式
  • 工厂方法模式
Entity Framework Extensions - 提升 EF Core 9
  批量插入
  批量删除
  批量更新
  批量合并

C# - Switch 语句


更新于:2020年6月25日

当您想针对三个或更多条件测试一个变量时,可以使用 switch 语句代替 if else 语句。在这里,您将学习 switch 语句以及如何在 C# 程序中高效地使用它。

以下是 switch 语句的通用语法。

语法
switch(match expression/variable)
{
    case constant-value:
        statement(s) to be executed;
        break;
    default: 
        statement(s) to be executed;
        break;
}

switch 语句以 switch 关键字开头,该关键字在括号 switch(匹配表达式) 中包含一个匹配表达式或变量。此匹配表达式或变量的结果将与花括号 内指定为 case 的条件进行测试。case 必须指定唯一的常量值,并以冒号 : 结尾。每个 case 都包含一个或多个要执行的语句。如果常量值与匹配表达式/变量的值相等,则执行该 case。switch 语句还可以包含一个可选的 default 标签。如果没有 case 执行,则执行 default 标签。break、return 或 goto 关键字用于使程序控制退出 switch case。

以下示例演示了一个简单的 switch 语句。

示例:C# Switch 语句
int x = 10;

switch (x)
{ 
    case 5:
        Console.WriteLine("Value of x is 5");
        break;
    case 10:
        Console.WriteLine("Value of x is 10");
        break;
    case 15:
        Console.WriteLine("Value of x is 15");
        break;
    default:
        Console.WriteLine("Unknown value");
        break;
}
尝试一下
输出
x 的值为 10

上面,switch(x) 语句包含一个变量 x,其值将与每个 case 值进行匹配。上面的 switch 语句包含三个 case,常量值分别为 5、10 和 15。它还包含 default 标签,如果没有 case 值与 switch 变量/表达式匹配,则执行该标签。每个 case 在 : 之后开始,并包含一个要执行的语句。x 的值与第二个 case case 10: 匹配,因此输出将是 x 的值为 10。

注意
switch 语句可以包含任何非空表达式,该表达式返回 char、string、bool、int 或 enum 类型的值。

switch 语句还可以包含一个表达式,其结果将在运行时与每个 case 进行测试。

示例:C# Switch 语句
int x = 125;

switch (x % 2)
{ 
    case 0:
        Console.WriteLine($"{x} is an even value");
        break;
    case 1:
        Console.WriteLine($"{x} is an odd Value");
        break;
}
尝试一下
输出
125 是一个奇数值

Switch Case

switch case 必须是唯一的常量值。它可以是 bool、char、string、integer、enum 或相应的可空类型。

注意
从 C# 7.0 开始,switch case 可以包含非唯一值。在这种情况下,将执行第一个匹配的 case。

考虑以下一个简单 switch 语句的示例。

示例:switch 语句
string statementType = "switch";

switch (statementType)
{
    case "if.else":
        Console.WriteLine("if...else statement");
        break;
    case "ternary":
        Console.WriteLine("Ternary operator");
        break;
    case "switch":
        Console.WriteLine("switch statement");
        break;
}
尝试一下
输出
switch 语句

多个 case 可以组合起来执行相同的语句。

示例:C# 组合 Switch Case
int x = 5;

switch (x)
{ 
    case 1:
        Console.WriteLine("x = 1");
        break;
    case 2:
        Console.WriteLine("x = 2");
        break;
    case 4:
    case 5:
        Console.WriteLine("x = 4 or x = 5");
        break;
    default:
        Console.WriteLine("x > 5");
        break;
}
尝试一下

每个 case 必须通过使用 break、return、goto 语句或一些其他方式明确退出 case,确保程序控制退出 case 并且不能“落空”到 default case。

以下使用 return 关键字。

示例:Switch Case 中的 return
static void Main(string[] args)
{
    int x = 125;
    Console.Write( isOdd(x)? "Even value" : "Odd value");
}

static bool isOdd(int i, int j)
{
    switch (x % 2)
    { 
        case 0:
            return true;
        case 1:
            return false;
        default:
            return false;
    }
    
    return false;
}
尝试一下
输出
奇数值

没有 break, return 或 goto 语句或具有相同常量值的 switch case 将导致编译时错误。

示例:C# Switch 语句
int x = 1;

switch (x)
{ 
    case 0:
        Console.WriteLine($"{x} is even value");
        break;
    case 1:
        Console.WriteLine($"{x} is odd Value");
        break;
    case 1: // Error - Control cannot fall through from one case label ('case 1:') to another
        Console.WriteLine($"{x} is odd Value");
    defaut:
        Console.WriteLine($"{x} is odd Value");
        break;
}

嵌套 Switch 语句

一个 switch 语句可以嵌套在另一个 switch 语句中。

示例:嵌套 switch 语句
int j = 5;

switch (j)
{
    case 5:
        Console.WriteLine(5);
        switch (j - 1)
        {
            case 4:
            Console.WriteLine(4);
            switch (j - 2)
            {
                case 3:
                Console.WriteLine(3);
                break;
            }
            break;
        }
        break;
    case 10:
        Console.WriteLine(10);
        break;
    case 15:
        Console.WriteLine(15);
        break;
    default:
        Console.WriteLine(100);
        break;
}
尝试一下
输出
5
4
3
TUTORIALSTEACHER.COM

TutorialsTeacher.com 是您权威的技术教程来源,旨在通过循序渐进的方法,指导您掌握各种网络和其他技术。

我们的内容帮助所有级别的学习者轻松快速地学习技术。通过访问此平台,即表示您已阅读并同意遵守我们的使用条款和隐私政策,这些条款和政策旨在保护您的体验和隐私权。

[email protected]

关于我们使用条款隐私政策
copywrite-symbol

2024 TutorialsTeacher.com. (v 1.2) 版权所有。