许多编程语言(包括 C#)的共同功能是 switch 语句。它提供了一种简洁的方法来处理代码块中的多个条件。但随着编程语言的发展,添加了新功能以提高代码的可读性、可维护性和有效性。 是 C# 8.0 中添加的一项此类功能,与传统的 switch 语句相比,它提供了更简洁的语法和附加功能。Switch Expressions
它是什么时候推出的?
Switch Expressions在 2019 年 9 月发布的 C# 8.0 中引入。此版本的 C# 带来了一些新功能和增强功能,其中开关表达式是最值得注意的新增功能之一。
如何使用切换表达式:
当使用 switch 表达式而不是 switch 语句时,代码在 C# 中更易于阅读和编写,因为它们的语法更简洁。
下面是一些示例,展示了开关表达式的不同功能:
int day = 3;
string message = day switch
{
1 => "Monday",
2 => "Tuesday",
3 => "Wednesday",
_ => "Weekend" // Default case using underscore (\_)
};
Console.WriteLine(message); // Output: Wednesday
2. 使用枚举进行模式匹配:
enum TrafficLight { Red, Yellow, Green }
TrafficLight light = TrafficLight.Yellow;
string action = light switch
{
TrafficLight.Red => "Stop",
TrafficLight.Yellow => "Caution",
TrafficLight.Green => "Go"
};
Console.WriteLine(action); // Output: Caution
3. 附加条件的外壳防护装置:
int number = 10;
string result = number switch
{
int n when (n % 2 == 0) => "Even",
int n => "Odd",
_ => "Invalid"
};
Console.WriteLine(result); // Output: Even
4. 从开关表达式返回值:
与传统的 switch 语句不同,switch 表达式本身并不直接包含每个大小写中的语句。但是,它们仍可用于以简洁的方式返回值。方法如下:return
1. 隐式返回:
例:
int number = 5;
string message = number switch
{
1 => "One",
2 => "Two",
_ => "More than two"
};
Console.WriteLine(message); // Output: More than two (since 5 is not 1 or 2)
2. 带计算的显式回报:
例:
double length = 10;
double pricePerMeter = 5;
double totalPrice = length switch
{
double l when l > 0 => l * pricePerMeter,
_ => throw new ArgumentException("Invalid length")
};
Console.WriteLine(totalPrice); // Output: 50
要点:
主要区别:
switch (variable)
{
case value1:
// statements
break;
case value2:
// statements
break;
// more cases
default:
// default statements
break;
}
切换表达式:切换表达式使用箭头语法提供更简洁的语法。它们消除了对显式语句的需要,并允许使用通配符的默认情况。=>break_
variable switch
{
value1 => // expression,
value2 => // expression,
// more cases
_ => // default expression
};
2. 类型推断:
3. 在 Lambda 表达式中使用:
4. 编译时检查:
5. 空处理: