0

0

C# 中的模式匹配开关表达式如何简化代码?

幻夢星雲

幻夢星雲

发布时间:2025-10-08 11:57:02

|

473人浏览过

|

来源于php中文网

原创

开关表达式通过模式匹配和表达式语法简化条件逻辑,支持类型判断、属性解构和条件过滤,减少冗长语句,提升代码可读性与维护性。

c# 中的模式匹配开关表达式如何简化代码?

在 C# 中,模式匹配开关表达式(switch expression)能显著简化代码,让条件逻辑更清晰、紧凑。它结合了 模式匹配表达式语法,避免冗长的 if-else 或传统 switch 语句。

使用类型模式进行对象处理

当你需要根据不同对象类型执行不同逻辑时,传统做法是用 if 和 is 检查类型。而使用开关表达式,可以更简洁地完成:

object value = GetValue();

string result = value switch

{

   int i => $"整数: {i}",

   string s when s.Length > 0 => $"字符串: {s}",

   null => "空值",

   _ => "未知类型"

};

这个例子中,直接根据 值的类型和条件 返回对应字符串,无需多个 if 判断或 break 语句。

利用属性模式简化数据解构

对于具有属性的对象,可以直接在模式中匹配其属性值。例如处理形状面积计算:

public record Point(int X, int Y);

public record Shape(string Type, Point Location, double Size);

Shape shape = GetShape();

double bonus = shape switch

{

   { Type: "circle", Size: >= 5 } => 10.0,

   { Type: "square", Location: { X: 0 } } => 5.0,

   { Type: "triangle" } => 3.0,

   _ => 0.0

};

这里通过 属性模式 直接提取并判断字段,省去临时变量和嵌套 if。

减少重复代码和提高可读性

开关表达式是表达式,必须返回一个值,这迫使逻辑完整且统一。相比传统 switch,它:

  • 不需要写 break,避免遗漏导致错误
  • 支持 when 条件过滤,增强匹配灵活性
  • 与 var 和 deconstruction 结合,可进一步简化复杂判断

比如解析配置项:

(string key, object data) config = GetCurrentConfig();

string message = config switch

{

   ("timeout", int t) => $"超时设置为 {t} 秒",

   ("retry", bool true) => "启用重试",

   ("mode", string m) => $"运行模式: {m}",

   _ => "无效配置"

};

通过解构元组并匹配类型和值,一行代码完成多维度判断。

基本上就这些。开关表达式让 C# 的条件逻辑更函数式、更易维护,尤其适合处理多种输入组合的场景。不复杂但容易忽略。

相关专题

更多
string转int
string转int

在编程中,我们经常会遇到需要将字符串(str)转换为整数(int)的情况。这可能是因为我们需要对字符串进行数值计算,或者需要将用户输入的字符串转换为整数进行处理。php中文网给大家带来了相关的教程以及文章,欢迎大家前来学习阅读。

381

2023.08.02

c语言中null和NULL的区别
c语言中null和NULL的区别

c语言中null和NULL的区别是:null是C语言中的一个宏定义,通常用来表示一个空指针,可以用于初始化指针变量,或者在条件语句中判断指针是否为空;NULL是C语言中的一个预定义常量,通常用来表示一个空值,用于表示一个空的指针、空的指针数组或者空的结构体指针。

233

2023.09.22

java中null的用法
java中null的用法

在Java中,null表示一个引用类型的变量不指向任何对象。可以将null赋值给任何引用类型的变量,包括类、接口、数组、字符串等。想了解更多null的相关内容,可以阅读本专题下面的文章。

437

2024.03.01

if什么意思
if什么意思

if的意思是“如果”的条件。它是一个用于引导条件语句的关键词,用于根据特定条件的真假情况来执行不同的代码块。本专题提供if什么意思的相关文章,供大家免费阅读。

768

2023.08.22

switch语句用法
switch语句用法

switch语句用法:1、Switch语句只能用于整数类型,枚举类型和String类型,不能用于浮点数类型和布尔类型;2、每个case语句后面必须跟着一个break语句,以防止执行其他case的代码块,没有break语句,将会继续执行下一个case的代码块;3、可以在一个case语句中匹配多个值,使用逗号分隔;4、Switch语句中的default代码块是可选的等等。

535

2023.09.21

Java switch的用法
Java switch的用法

Java中的switch语句用于根据不同的条件执行不同的代码块。想了解更多switch的相关内容,可以阅读本专题下面的文章。

418

2024.03.13

java中break的作用
java中break的作用

本专题整合了java中break的用法教程,阅读专题下面的文章了解更多详细内容。

118

2025.10.15

java break和continue
java break和continue

本专题整合了java break和continue的区别相关内容,阅读专题下面的文章了解更多详细内容。

256

2025.10.24

c++ 根号
c++ 根号

本专题整合了c++根号相关教程,阅读专题下面的文章了解更多详细内容。

22

2026.01.23

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
Bootstrap 5教程
Bootstrap 5教程

共46课时 | 3万人学习

【web前端】Node.js快速入门
【web前端】Node.js快速入门

共16课时 | 2万人学习

Go语言实战之 GraphQL
Go语言实战之 GraphQL

共10课时 | 0.8万人学习

关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号