📅  最后修改于: 2023-12-03 14:39:44.212000             🧑  作者: Mango
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语句处理数字和字符。
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
对于字符串类型,可以使用字符串字面值或引用相等运算符 == 进行比较。
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语句在处理枚举类型时尤其有用。
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语句是很重要的。