C# 中 `=null!` 语法的具体含义是什么?
= null! 语法含义说明
我当前使用 VS 2022 及其默认的 C# 版本,以下几行代码可以正常编译通过。
很多人刚开始看到= null!的写法会误以为是C# 10的新特性,实际上这个语法是C# 8.0就推出的可空引用类型配套功能,叫做null包容运算符(也叫null宽恕运算符),作用如下:
- 当项目开启可空引用类型校验后,编译器会默认禁止给非空引用类型赋值
null,一旦写出这类代码会直接抛出编译警告。 - 语法末尾的
!就是主动告知编译器「这里赋值为null是开发者主动控制的,后续逻辑保证这个变量/属性不会出现空引用异常」,以此压制编译器的非空校验告警。 - 这个写法最常用的场景就是类属性初始化:比如你明确知道某个非空属性会在构造函数后续逻辑、依赖注入、框架自动初始化阶段被赋值,不想在声明的时候给一个无意义的默认值,就可以用
= null!的写法规避警告,同时不需要额外关闭全局的可空校验。
内容的提问来源于stack exchange,提问作者Ernest Rutherford
相关产品推荐
相关产品推荐

