前言
分支结构在程序设计非常关键程序流程控制语句。switch 语句充当控制结构,支持根据变量的值执行不同的代码块。当我们需要将变量与多个常量值进行比较,并根据结果执行各种操作时,switch 也是常用选择。本文探索C#中 switch case 的使用。
基本语法
switch (expression)
{
case value1:
// 代码块
break;
case value2:
// 代码块
break;
case value3:
// 代码块
break;
default:
// 没有匹配的代码块
break;
}
说明:
1、expression: 要检查的值或变量
2、case: 每个 case 标签都包含一个常量值,以便与表达式进行比较。
3、break: 终止 switch 块。没有中断,则进入下一个情况。
4、default: 可选项,如果没有任何 case 标签与表达式匹配,则执行此命令。
使用示例
using System.Text;
namespace Fountain.WinConsole.SwitchDemo
{
internal class Program
{
static void Main(string[] args)
{
int expression = 3;
switch (expression)
{
case 1:
Console.WriteLine("满足的条件是1");
break;
case 2:
Console.WriteLine("满足的条件是2");
break;
case 3:
Console.WriteLine("满足的条件是3");
break;
default:
Console.WriteLine("不在指定的条件范围");
break;
}
Console.ReadKey();
}
}
}
//执行结果为
满足的条件是3
2、带字符串的 switch 示例
using System.Text;
namespace Fountain.WinConsole.SwitchDemo
{
internal class Program
{
static void Main(string[] args)
{
string expression = "ZTO";
switch (expression)
{
case "ZTO":
Console.WriteLine("承运商中通");
break;
case "YTO":
Console.WriteLine("承运商是圆通");
break;
case "YUNDA":
Console.WriteLine("承运商是韵达");
break;
default:
Console.WriteLine("不在指定的条件范围的承运商");
break;
}
Console.ReadKey();
}
}
}
//执行结果为
承运商中通
3、 多个满足条件使用一个代码块
using System.Text;
namespace Fountain.WinConsole.SwitchDemo
{
internal class Program
{
static void Main(string[] args)
{
string expression = "CNZTO";
switch (expression)
{
case "CNZTO":
case "JDZTO":
Console.WriteLine("承运商是中通");
break;
case "CNYUNDA":
case "JDYUNDA":
Console.WriteLine("承运商是韵达");
break;
default:
Console.WriteLine("不在指定的条件范围的承运商");
break;
}
Console.ReadKey();
}
}
}
//执行结果为
承运商中通
4、在case中使用 when 子句 【.NET Framework 4.7 以上】
.NET Framework 4.7 引入了模式匹配,由 when 关键字促进,允许在 switch 语句中合并更复杂的条件。using System.Text;
namespace Fountain.WinConsole.SwitchDemo
{
internal class Program
{
static void Main(string[] args)
{
int expression = 7;
switch (expression)
{
case int n when (n >= 1 && n <= 10):
Console.WriteLine("整数值在1与10之间");
break;
case int n when (n > 10):
Console.WriteLine("整数值大于10");
break;
default:
Console.WriteLine("整数值小于1");
break;
}
Console.ReadKey();
}
}
}
//执行结果为
整数值在1与10之间
5、switch表达式 【.NET Framework 4.8 以上版本】
.NET 5 引入了 switch 表达式,它比传统的 switch 语句更简洁。它们允许您使用模式匹配并从表达式返回一个值。using System.Text;
namespace Fountain.WinConsole.SwitchDemo
{
internal class Program
{
static void Main(string[] args)
{
int expression = 2;
string result = expression switch
{
1 => "满足的条件是1",
2 => "满足的条件是2",
3 => "满足的条件是3",
_ => "不在指定的条件范围"
};
Console.WriteLine(result);
Console.ReadKey();
}
}
}
//执行结果为
满足的条件是1
6、enum 和 switch 一起使用
using System.Text;
namespace Fountain.WinConsole.SwitchDemo
{
internal class Program
{
static void Main(string[] args)
{
Operation operation = Operation.Subtract;
int firstnum = 4;
int secondnum = 3;
switch (operation)
{
case Operation.Add:
Console.WriteLine($"计算结果: {firstnum + secondnum}");
break;
case Operation.Subtract:
Console.WriteLine($"计算结果: {firstnum - secondnum}");
break;
case Operation.Multiply:
Console.WriteLine($"计算结果: {firstnum * secondnum}");
break;
default:
Console.WriteLine("无效操作");
break;
}
Console.ReadKey();
}
}
public enum Operation
{
Add,
Subtract,
Multiply
}
}
//执行结果为
计算结果: 1
7、使用元组模式的 Switch【.NET Framework 4.7 以上版本】
using System.Text;
namespace Fountain.WinConsole.SwitchDemo
{
internal class Program
{
static void Main(string[] args)
{
string firstName = "叶凡";
string lastName = "";
(string firstName, string lastName) personDetail = (firstName,lastName);
switch (personDetail)
{
case ("虾米", "无"):
Console.WriteLine($"您好, {firstName} {lastName}");
break;
case ("叶凡", _):
Console.WriteLine($"您好, {firstName}");
break;
default:
Console.WriteLine("您好, Unknown!");
break;
}
Console.ReadKey();
}
}
}
//执行结果为
您好, 叶凡
小结
以上通过多种使用示例,探索了switch语句使用方法。
该文章在 2024/10/24 8:58:27 编辑过