📜  c# switch 语句 - C# (1)

📅  最后修改于: 2023-12-03 14:39:44.212000             🧑  作者: Mango

C# Switch语句

概述

Switch语句是一种控制流语句,用于根据表达式的值选择多个代码块中的一个执行。它通常用于根据枚举值或整数参数执行不同的操作。

在C#中,switch语句可以与常见的类型(如整数、字符、字符串和枚举)一起使用。同时,C# 7.0中还引入了对模式匹配的支持,扩展了switch的用途。

下面是一个基本的switch语句结构:

switch (expression)
{
    case value1:
        //代码块1
        break;
    case value2:
        //代码块2
        break;
    default:
        //默认代码块
        break;
}

在这个语句中,表达式将与case语句中的值进行比较。如果它们匹配,则执行相应的代码块。如果没有匹配,则执行默认代码块(如果存在)。

注意,每个代码块都以break语句结尾。如果没有break语句,则控制流将穿过后续的case语句,一直到switch语句结束。

数值和字符类型的Switch语句

例如,我们可以使用switch语句处理数字和字符。

int x = 2;
switch (x)
{
    case 0:
        Console.WriteLine("x is zero");
        break;
    case 1:
        Console.WriteLine("x is one");
        break;
    case 2:
        Console.WriteLine("x is two");
        break;
    default:
        Console.WriteLine("x is greater than two");
        break;
}
输出:x is two

注意,在switch中使用case时,值必须是常量表达式。因此,以下代码将不起作用:

int x = 2;
switch (x)
{
    case int y:  // 不起作用
        Console.WriteLine(y);
        break;
}

在C#中,通过引入模式匹配,可以使用case + when语法更好地支持数值和字符类型的模式。

int x = 2;
switch (x)
{
    case int y when y < 0:
        Console.WriteLine("Negative");
        break;
    case int y when y > 0:
        Console.WriteLine("Positive");
        break;
    case int y:
        Console.WriteLine("Zero");
        break;
    default:
        break;
}
输出:Positive
字符串类型的Switch语句

对于字符串类型,可以使用字符串字面值或引用相等运算符 == 进行比较。

string s = "two";
switch (s)
{
    case "zero":
        Console.WriteLine("s is zero");
        break;
    case "one":
        Console.WriteLine("s is one");
        break;
    case "two":
        Console.WriteLine("s is two");
        break;
    default:
        Console.WriteLine("s is not zero, one or two");
        break;
}
输出:s is two

注意,没有break语句的情况下将会发生“掉落”,这意味着控制流将通过剩余的case语句而不是仅仅执行一个。

string s = "two";
switch (s)
{
    case "zero":
        Console.WriteLine("s is zero");
    case "one":
        Console.WriteLine("s is one");
    case "two":
        Console.WriteLine("s is two");
        break;  // 防止掉落
    default:
        Console.WriteLine("s is not zero, one or two");
        break;
}
输出:s is two
枚举类型的Switch语句

switch语句在处理枚举类型时尤其有用。

enum Color { Red, Green, Blue }
Color c = Color.Green;
switch (c)
{
    case Color.Red:
        Console.WriteLine("The color is red");
        break;
    case Color.Green:
        Console.WriteLine("The color is green");
        break;
    case Color.Blue:
        Console.WriteLine("The color is blue");
        break;
    default:
        Console.WriteLine("Unknown color");
        break;
}
输出:The color is green
总结

Switch语句是一种在C#编程中非常常见的控制流语句,它对于处理枚举值和整数参数非常有用。通过模式匹配,switch语句还可以处理更复杂的类型,例如字符串和自定义对象。因此,良好的掌握Switch语句是很重要的。