在 C# 中,switch
语句用于基于表达式的值执行不同的代码块。switch
语句类似于一系列 if-else
语句,但通常更简洁、易读。以下是 switch
语句的基本用法和一些高级特性。
基本用法
csharp复制代码
using System; | |
class Program | |
{ | |
static void Main() | |
{ | |
int day = 3; | |
switch (day) | |
{ | |
case 1: | |
Console.WriteLine("Monday"); | |
break; | |
case 2: | |
Console.WriteLine("Tuesday"); | |
break; | |
case 3: | |
Console.WriteLine("Wednesday"); | |
break; | |
case 4: | |
Console.WriteLine("Thursday"); | |
break; | |
case 5: | |
Console.WriteLine("Friday"); | |
break; | |
case 6: | |
Console.WriteLine("Saturday"); | |
break; | |
case 7: | |
Console.WriteLine("Sunday"); | |
break; | |
default: | |
Console.WriteLine("Invalid day"); | |
break; | |
} | |
} | |
} |
特性说明
case
标签:每个case
标签对应一个要匹配的值。break
语句:如果匹配成功,执行相应的代码块。break
语句防止执行流进入下一个case
块(即防止“贯穿”现象)。default
标签:如果表达式的值不匹配任何case
标签,则执行default
块的代码。default
标签是可选的。
高级用法
1. switch
表达式(C# 8.0 及以上)
从 C# 8.0 开始,switch
语句也可以用作表达式,返回一个值。
csharp复制代码
using System; | |
class Program | |
{ | |
static void Main() | |
{ | |
int day = 3; | |
string dayName = day switch | |
{ | |
1 => "Monday", | |
2 => "Tuesday", | |
3 => "Wednesday", | |
4 => "Thursday", | |
5 => "Friday", | |
6 => "Saturday", | |
7 => "Sunday", | |
_ => "Invalid day" | |
}; | |
Console.WriteLine(dayName); | |
} | |
} |
2. 模式匹配(C# 7.0 及以上)
C# 7.0 引入了模式匹配,可以在 switch
语句中使用 when
子句进行更复杂的条件判断。
csharp复制代码
using System; | |
class Program | |
{ | |
static void Main() | |
{ | |
object obj = "Hello"; | |
switch (obj) | |
{ | |
case int i: | |
Console.WriteLine($"Integer: {i}"); | |
break; | |
case string s when s.Length > 5: | |
Console.WriteLine($"Long string: {s}"); | |
break; | |
case string s: | |
Console.WriteLine($"Short string: {s}"); | |
break; | |
default: | |
Console.WriteLine("Unknown type"); | |
break; | |
} | |
} | |
} |
3. 多个 case
标签合并
从 C# 7.0 开始,你可以合并多个 case
标签。
csharp复制代码
using System; | |
class Program | |
{ | |
static void Main() | |
{ | |
int day = 6; | |
switch (day) | |
{ | |
case 6: | |
case 7: | |
Console.WriteLine("Weekend"); | |
break; | |
case 1: | |
case 2: | |
case 3: | |
case 4: | |
case 5: | |
Console.WriteLine("Weekday"); | |
break; | |
default: | |
Console.WriteLine("Invalid day"); | |
break; | |
} | |
} | |
} |
注意事项
switch
语句中的表达式必须是可比较的(如int
、string
、Enum
等)。- 每个
case
块通常应以break
语句结束,以避免执行流进入下一个case
块。 default
块是可选的,但如果表达式不匹配任何case
标签且没有default
块,则不执行任何操作。
通过这些用法和特性,switch
语句在 C# 中成为了一种强大且灵活的控制流工具。
本站资源均来自互联网,仅供研究学习,禁止违法使用和商用,产生法律纠纷本站概不负责!如果侵犯了您的权益请与我们联系!
转载请注明出处: 免费源码网-免费的源码资源网站 » c# .net switch用法
发表评论 取消回复