登录
首页 >  文章 >  常见问题

C#var与类型模式匹配使用技巧

时间:2025-12-31 09:31:43 287浏览 收藏

文章小白一枚,正在不断学习积累知识,现将学习到的知识记录一下,也是将我的所得分享给大家!而今天这篇文章《C# 模式匹配:var 与类型模式结合使用方法》带大家来了解一下##content_title##,希望对大家的知识积累有所帮助,从而弥补自己的不足,助力实战开发!


类型模式与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";

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与类型模式匹配使用技巧》,希望本文对你有所帮助!关注golang学习网公众号,给大家分享更多文章知识!

前往漫画官网入口并下载 ➜
相关阅读
更多>
最新阅读
更多>
课程推荐
更多>