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

C# 12主构造函数如何实现依赖注入参数的空值检查?

C# 12 主构造函数的空值检查实现与快速失败说明

在C# 12的主构造函数中,你可以通过以下几种方式实现空值检查,同时完全可以延续之前的快速失败机制:

方式一:利用构造函数体补充检查逻辑

主构造函数允许在类内部添加额外的构造函数代码块,直接对参数进行空值检查:

public class UserService(IUnitOfWork uow) : IUserService
{
    // 主构造函数的补充逻辑,执行空值检查
    public UserService
    {
        ArgumentNullException.ThrowIfNull(uow);
    }
}

方式二:字段初始化时直接检查

如果需要将参数赋值给私有只读字段,可以在字段初始化时结合空合并运算符抛出异常,同时完成检查和赋值:

public class UserService(IUnitOfWork uow) : IUserService
{
    private readonly IUnitOfWork _uow = uow ?? throw new ArgumentNullException(nameof(uow));
}

关于快速失败机制的必要性

必须保留快速失败机制。空值检查的核心目的就是在对象创建阶段就立即发现无效的空参数,避免后续业务逻辑执行时触发NullReferenceException,这是防御性编程的关键原则。不管是C# 12的主构造函数还是之前的传统构造函数,快速失败的逻辑都应该保留——尽早抛出明确的ArgumentNullException,能让问题定位更直接,避免排查隐晦的空引用错误。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.05 13:31:00