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

使用带注解的扩展方法时消除可能的空引用解引用警告

解决IsNotNull扩展方法引发的空引用解引用警告

你遇到的问题是因为编译器无法通过现有的ContractAnnotation推断出调用IsNotNull()后对象的非空状态,所以即使逻辑上已经做了判断,还是会触发警告。不用手动加!抑制,改用.NET原生的Nullable特性就能让编译器正确识别。

修正后的扩展方法代码

using System.Diagnostics.CodeAnalysis;

public static class ObjectExtensions
{
    [NotNullWhen(true)]
    public static bool IsNotNull(this object? obj)
    {
        return obj != null;
    }
}

关键改动说明

  • 给参数obj添加?标记,明确它是可空类型,符合Nullable上下文的语法要求
  • 使用[NotNullWhen(true)]特性:这个特性专门告诉编译器,当方法返回true时,传入的obj参数一定不为null

修正后的使用代码

if (actions.IsNotNull())
{
    actions.Invoke(builder); // 不再出现空引用解引用警告
}

之前的ContractAnnotation是JetBrains系列工具的注解,虽然能被Resharper识别,但.NET编译器本身更认可原生的Nullable特性,尤其是在启用了Nullable上下文的项目中,这种方式能更准确地提供空值推断信息。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.20 13:25:54