C#中‘is {}’语法的作用、适用场景及表达式类型解析
C# 中
is {} 语法详解 一、is {} 的核心作用
is {} 是C# 7.0及以后引入的模式匹配语法,核心用来判断变量是否不为 null,同时会隐式验证变量是引用类型或可空值类型(非可空值类型永远不会为null,用这个判断没有实际意义)。
它和传统的variable != null功能等价,但在模式匹配场景下扩展性更强,写法也更简洁。
二、代码中{}的类型含义
针对你给出的代码片段:
if (variableName is { }) { // .. }
这里的{}是无属性的匿名类型模式,它不指定具体类型,只要求目标变量不为null。也就是说,不管variableName是引用类型还是可空值类型,只要它不是null,这个条件就会成立。
三、适用场景
- 基础非空判断:替代
!= null,在多条件链式判断里更简洁:if (user is {} && user.Address is {}) { // 处理用户和地址都非空的逻辑 } - 结合解构模式:如果变量是可解构类型(比如自定义类、元组),可以在非空判断的同时解构属性并赋值:
if (user is { Id: var userId, Name: var userName }) { // userId和userName已赋值,且user肯定非空 } - switch表达式/语句中的模式匹配:快速过滤null值,统一处理非空分支:
var status = user switch { {} => "用户存在", null => "用户不存在" }; - 可空值类型的非空判断:针对
int?、DateTime?这类可空值类型,判断其是否有值(等价于.HasValue):int? num = 10; if (num is {}) { // 可安全访问num.Value }
内容的提问来源于stack exchange,提问作者Rodrigo Salazar
相关产品推荐
相关产品推荐

