.net core 为什么使用 null!

为什么使用 null!

通常在以下几种情况中,你可能会使用 null!

  • 属性值可能会在对象构造或某个方法中被初始化,但在构造函数或者对象完全初始化之前,属性的值可能会是 null
  • 你知道这个属性最终会被赋一个非 null 的值,但编译器在静态分析时可能不能完全理解这种情况,使用 null! 可以让编译器跳过相关的警告。

示例:

cs 复制代码
public class Person
{
    public string Name { get; set; } = null!;

    public Person(string name)
    {
        Name = name;  // 通过构造函数赋值,确保 Name 不会是 null
    }
}

在这个例子中,Name 属性初始时赋值为 null!,然后在构造函数中通过 name 参数将其赋值为一个实际的非 null 值。这样可以避免编译器的警告。

重点总结:

  • null! 是用于在你确信后续代码中不会出现 null 引用时抑制编译器的警告。
  • 可空引用类型空值抑制操作符(! 是 C# 8.0 引入的特性,目的是提高代码的健壮性,避免 null 引用异常(NullReferenceException)。

通过这种方式,开发者可以更灵活地处理属性的初始化和赋值,同时避免不必要的编译器警告。

相关推荐
sky-stars25 分钟前
.NET 泛型编程(泛型类、泛型方法、泛型接口、泛型委托、泛型约束)
c#·.net·.netcore
Mintopia40 分钟前
🐋 用 Docker 驯服 Next.js —— 一场前端与底层的浪漫邂逅
前端·javascript·全栈
Mintopia42 分钟前
物联网数据驱动 AIGC:Web 端设备状态预测的技术实现
前端·javascript·aigc
一个W牛1 小时前
报文比对工具(xml和sop)
xml·前端·javascript
作业逆流成河1 小时前
🔥 enum-plus 3.0:介绍一个天花板级的前端枚举库
前端·javascript·前端框架
蒜香拿铁1 小时前
Angular【组件】
前端·javascript·angular.js
Sapphire~2 小时前
重学JS-012 --- JavaScript算法与数据结构(十二)正则表达式
javascript·数据结构·算法
浪裡遊2 小时前
HTML面试题
前端·javascript·react.js·前端框架·html·ecmascript
More more2 小时前
uniapp实时查看在线监控,JessibucaMobile实现横屏播放
前端·javascript·uni-app·jessibucamobile
Jiaberrr3 小时前
解决uni-app通用上传与后端接口不匹配问题:原生上传文件方法封装 ✨
前端·javascript·uni-app