You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.12 19:50:25