类型模式与var模式可协同使用:类型模式如obj is string s用于类型检查并赋值,var模式如obj is var v则捕获任意非null值;二者在is或switch表达式中结合,实现灵活的类型匹配与变量绑定。

在 C# 中,类型模式和 var 模式可以结合使用,主要用于 is 表达式或 switch 表达式中,实现类型检查并捕获变量。虽然它们是不同的模式,但在语法上可以协同工作。
当你使用 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 模式?的详细内容,更多请关注php中文网其它相关文章!
每个人都需要一台速度更快、更稳定的 PC。随着时间的推移,垃圾文件、旧注册表数据和不必要的后台进程会占用资源并降低性能。幸运的是,许多工具可以让 Windows 保持平稳运行。
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号