首页 > 常见问题 > 正文

C# 中的模式匹配类型模式如何结合 var 模式?

小老鼠
发布: 2025-09-27 08:32:01
原创
693人浏览过
类型模式与var模式可协同使用:类型模式如obj is string s用于类型检查并赋值,var模式如obj is var v则捕获任意非null值;二者在is或switch表达式中结合,实现灵活的类型匹配与变量绑定。

c# 中的模式匹配类型模式如何结合 var 模式?

在 C# 中,类型模式和 var 模式可以结合使用,主要用于 is 表达式或 switch 表达式中,实现类型检查并捕获变量。虽然它们是不同的模式,但在语法上可以协同工作。

类型模式 + var 模式的实际用法

当你使用 is 进行类型检查时,可以直接将类型模式与变量声明结合,这其实不是两个独立模式的“拼接”,而是 C# 语言设计的一种简洁语法:

注意:这里所谓的“结合”其实是类型模式本身支持直接声明变量,而不是 var 模式参与。

例如:

if (obj is string text)

这行代码使用了类型模式,它做了两件事:

  • 检查 obj 是否为 string 类型
  • 如果是,将它转换并赋值给新变量 text

这里的 text 变量类型是 string,不是 var 模式的结果。var 模式是另一种写法:

if (obj is var temp)

这表示匹配任何非 null 的值,并将它赋给一个与原类型相同的局部变量 temp。它不进行类型检查,只是引入一个变量。

如何组合使用?

你可以先用 var 捕获值,再配合类型模式做进一步判断。比如:

if (obj is var value && value is int number && number > 10)

这里:

  • value 是通过 var 模式捕获的任意值
  • 接着用 value is int number 做类型匹配并提取整数值

也可以在 switch 表达式中结合使用:

object input = "hello";

可图大模型
可图大模型

可图大模型(Kolors)是快手大模型团队自研打造的文生图AI大模型

可图大模型32
查看详情 可图大模型

var result = input switch

{

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

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

    var x => $"其他类型: {x?.ToString()}"

};

这个例子中,前两个是类型模式,最后一个 var x 是兜底模式,匹配所有未处理的情况,并把输入赋给变量 x

关键区别与注意事项

要清楚区分:

  • obj is string s:类型模式,只在类型匹配时成功
  • obj is var v:始终匹配(除了 null),用于获取带名字的变量

var 模式不会改变类型推断行为,v 的类型就是表达式的运行时类型。

另外,在 C# 9+ 中,var 模式可用于弃元:

if (obj is not var _) —— 实际等价于 obj != null

基本上就这些。类型模式帮你做类型判断和转换,var 模式帮你命名和捕获值,两者可在复杂条件中配合使用,但语法上不是“组合成一个新模式”,而是各自独立发挥作用。

以上就是C# 中的模式匹配类型模式如何结合 var 模式?的详细内容,更多请关注php中文网其它相关文章!

最佳 Windows 性能的顶级免费优化软件
最佳 Windows 性能的顶级免费优化软件

每个人都需要一台速度更快、更稳定的 PC。随着时间的推移,垃圾文件、旧注册表数据和不必要的后台进程会占用资源并降低性能。幸运的是,许多工具可以让 Windows 保持平稳运行。

下载
来源:php中文网
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
最新问题
开源免费商场系统广告
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 意见反馈 讲师合作 广告合作 最新更新 English
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习
PHP中文网抖音号
发现有趣的

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