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
相关产品推荐
相关产品推荐

