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

如何利用NotNullIfNotNull特性基于函数返回值标记out参数非空?

如何利用NotNullIfNotNull特性基于函数返回值标记out参数非空?

嘿,你找对路子了!NotNullIfNotNull特性完全支持把函数返回值作为关联条件,只要把特性的参数写成"return"就可以实现你想要的效果——当函数返回的Result?不为null时,让编译器自动知道那个out参数Parameter?也肯定不是null,这样外部调用时就不用同时检查两个变量的null状态了。

你只需要修改函数的参数标记,调整后的代码如下:

#nullable enable
using System.Diagnostics.CodeAnalysis;

public class YourClass
{
    public Result? GetResult([NotNullIfNotNull("return")] out Parameter? parameter)
    {
        Result? result = // ... 这里写获取结果的逻辑
        if (result is not null)
        {
            // ... 你的业务处理逻辑
            parameter = something; // 确保这里赋值的是非null值
            return result;
        }
        parameter = null;
        return null;
    }
}

几个需要注意的点:

  • *[NotNullIfNotNull("return")]*是核心:它告诉静态代码分析器,只要函数返回的结果不为null,被标记的out参数就一定不为null。
  • 必须开启nullable上下文(代码开头的#nullable enable),否则这个特性的静态分析提示不会生效。
  • 这个特性需要.NET Core 3.0及以上,或者.NET Framework 4.8及以上的版本支持。

调用的时候你就能感受到便利了,比如:

var yourInstance = new YourClass();
var result = yourInstance.GetResult(out var parameter);

if (result is not null)
{
    // 这里编译器会自动识别parameter非null,不用额外写null检查
    parameter.DoSomething();
}

内容来源于stack exchange

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.07 08:18:06