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

能否无需提前声明变量,在if空值检查中直接使用对象?

解决方案

当然有办法不用提前声明变量就能实现相同效果,从C# 7.0版本开始,就可以借助模式匹配语法在if条件里直接完成变量声明、赋值和空值检查:

  • 基础写法(兼容C# 7.0+):

    if (dbContext.Get<User>(id) is User user && user != null)
    {
        user.FirstName = ...;
    }
    

    这里dbContext.Get<User>(id)的返回值会直接赋值给新声明的user变量,同时检查变量不为null,满足条件后就能在代码块里直接使用user。

  • 简洁写法(C# 8.0+):
    利用属性模式可以进一步简化空值检查逻辑:

    if (dbContext.Get<User?>(id) is { } user)
    {
        user.FirstName = ...;
    }
    

    { }模式会自动匹配非null的对象,同时把结果赋值给user,代码更紧凑。

  • 明确空值检查写法(C# 8.0+):
    也可以用is not null语法直接声明并检查:

    if (dbContext.Get<User>(id) is not null User user)
    {
        user.FirstName = ...;
    }
    

以上写法中,user变量的作用域仅限于if的代码块内,和提前声明变量的效果完全一致,但省去了额外的变量声明步骤。

内容的提问来源于stack exchange,提问作者Kage2000

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.20 19:04:59