新闻中心

C# 中的模式匹配开关表达式如何返回结果?

2025-09-29
浏览次数:
返回列表
答案是开关表达式通过模式匹配返回首个成功分支的结果,示例中根据输入值类型或范围返回对应字符串,必须穷尽所有情况以确保返回结果。

c# 中的模式匹配开关表达式如何返回结果?

在 C# 中,模式匹配开关表达式(switch expression)通过一种简洁、函数式的方式对输入值进行多条件判断,并直接返回一个结果。它与传统的 switch 语句不同,不是用于执行语句块,而是用于计算并返回值。

基本语法和返回机制

开关表达式使用 => 箭头语法,每个分支匹配一个模式并返回一个表达式结果。整个表达式会求值为第一个匹配成功的分支的返回值。

示例:
string input = "hello";
var result = input switch
{
    null => "is null",
    "" => "is empty",
    { Length: 1 } => "is single character",
    "hello" => "is hello",
    _ => "is something else"
};
// result 的值为 "is hello"

在这个例子中,input switch 根据不同的模式匹配返回对应的字符串。最后一个 _ 是弃元模式,表示“匹配所有其他情况”,相当于传统 switch 中的 default

结合类型模式进行对象判断

开关表达式常用于根据对象的实际类型执行不同的逻辑并返回结果。

示例:
object value = 42;
<p>string typeInfo = value switch
{
null => "null",
int i => $"integer with value {i}",
string s when s.Length > 0 => $"non-empty string: {s}",
string <em> => "empty or whitespace string",
</em> => $"unknown type: {value.GetType()}"
};
// typeInfo 的值为 "integer with value 42"</p>

这里使用了类型模式(如 int i),如果匹配成功,变量 i 就可以在右侧表达式中使用。还可以配合 when 子句添加额外条件。

Openflow Openflow

一键极速绘图,赋能行业工作流

Openflow 88 查看详情 Openflow

如何确保返回结果

开关表达式必须是**穷尽的**,也就是说,编译器要求你覆盖所有可能的情况,否则会报错。这保证了表达式一定有返回值。

  • 使用 _ 处理默认情况是最常见的做法。
  • 如果遗漏了某些可能的分支,比如没有处理所有枚举值或缺少 _,编译器将提示错误。

实际应用场景

开关表达式非常适合用在需要根据输入返回不同结果的场景,比如数据转换、状态处理、API 响应构造等。

示例:根据数字返回描述
<pre class="brush:php;toolbar:false;">
int count = 3;
string message = count switch
{
    0 => "No items",
    1 => "One item",
    >= 2 and <= 10 => $"Few items ({count})",
    _ => "Many items"
};

这个例子还展示了范围模式(>= 2 and ),进一步增强了表达能力。

基本上就这些。开关表达式让代码更清晰、更安全,同时自然地返回结果,避免了冗长的 if-else 链。只要记住每个分支返回一个值,整体结构完整,就能高效使用。不复杂但容易忽略的是,它返回的是表达式的值,而不是执行动作。

以上就是C# 中的模式匹配开关表达式如何返回结果?的详细内容,更多请关注其它相关文章!


# c#  # switch  # 的是  # 值为  # 元旦节  # 返回值  # 解决方法  # 模式匹配  # 网站seo优化成本  # 象山优化网站  # 网站整站优化团队  # 红包营销推广  # 金华营销推广报名网站有哪些  # 网络营销推广好学吗  # 本溪网站优化排名哪家好  # 营销型网站建设官网  # 关键词排名通俗易懂吗  # 关键词排名陆金苹果实力  # 子句  # 无线路由器  # 护眼  # 如何更改  # 夜间 


相关栏目: 【 行业资讯67740 】 【 技术百科0 】 【 网络运营39195


相关推荐: 手机全功能type-c接口是什么意思  typescript如何开发  得物上怎么样申请退换货 得物上退换货详细指南(包含海外)  8k是多少钱  mac 如何启动命令行模式  折叠屏手机哪个卖得最好  苹果16有哪些自带配件  安全的ao3镜像网站链接入口  华为5g手机怎么用4g网络  负市盈率是什么意思  软件命令行参数如何设置  交管12123协议头不完整怎么解决  如何设置sql命令  分销是什么意思  春运预约抢票能抢到吗  摩托车上power是什么意思  为什么程序员热爱typescript  iPhone无法打开YouTube原因分析与解决方案  春运抢票用不用取票码  折叠屏手机哪款最好  debug中如何用n命令命名程序文件名  ensp命令如何提示  没网环境如何安装typescript  跑分是什么意思  360n5锁屏壁纸怎么设置  树莓派命令行如何新建文件  如何找出命令行  苹果16系统网站有哪些  直接gmV是什么意思?直接GMV:定义和概念  meet是什么意思  春运车站抢票和网上抢票  如何正确使用固态硬盘  夸克缺什么登录不了  夸克为什么会变小  笔记本如何选择固态硬盘  md5解密是什么意思  什么是typescript  苹果16更新了哪些软件  命令指示符如何打开盘符  高市盈率是什么意思  哪些库是typescript  make命令如何使用  台机如何安装固态硬盘  如何进入安卓命令行  春运抢票最快几天能成功  春运抢票最多能抢几趟车  交管12123协议头是什么  如何创建sql命令  光刻机分类有哪些品牌的  drawing是什么意思 

搜索