总目录



前言

本文主要讲解!(null包容)运算符的使用,至于详细原理可以查看本文附录的参考文档。


一、!(null包容)运算符是什么?

之前我们使用!符号都是用于逻辑运算符,如:

        private void TestMethod(bool isOpen){if (!isOpen)//取反{//其余业务代码...}}

而在C#8.0之后,!有了新的意义,那就是null包容运算符,用来控制类型的可空性。
通俗点说:就是通过使用null包容运算符,关闭编译器的空检查,让其不在编译器中报出警告。

二、!(null包容)运算符如何使用?

1.使用

如果我们直接对引用类型进行赋null初始值的时候,编译器检查后会警告

如我们想去掉警告,则需要通过 !(null包容)运算符

通过上述案例我们需要知道

  • !(null包容)运算符可以让编译器关闭null的检查
  • 编译器关闭null 检查,并不代表后续该值不可能为null,仅仅是编译器层面的null检查而已

2.扩展-预处理器指令启用或关闭null检查


可以使用 #nullable enable#nullable disable 预处理器指令在代码中的任意位置启用和禁用 可为 null 的引用类型


总结

以上就是今天要介绍的内容,希望以上内容可以帮助到大家,如文中有不对之处,还请批评指正。


参考:
C# 中的 null 包容运算符 “!” —— 概念、由来、用法和注意事项
! (null 包容)运算符(C# 参考)
C# 中的 null 包容运算符 “!” —— 概念、由来、用法和注意事项

C# !(null包容)运算符的使用相关推荐

  1. C# 中的 null 包容运算符 “!” —— 概念、由来、用法和注意事项

    在 2020 年的最后一天,博客园发起了一个开源项目:基于 .NET 的博客引擎 fluss,我抽空把源码下载下来看了下,发现在属性的定义中,有很多地方都用到了 null!,如下图所示: 这是什么用法 ...

  2. PHP NULL 合并运算符

    PHP7 null合并运算符 告别isset() 以前的写法 $info = isset($_GET['email']) ? $_GET['email'] : 'noemail'; 现在直接这样写就可 ...

  3. php 三元运算符 为空,PHP中三元运算符和Null合并运算符的简单比较

    在PHP中,三元运算符(?:)和Null合并运算符(??)的用法相似,那么它们之间有什么差异?下面本篇文章就来带大家了解一下三元运算符和Null合并运算符,希望对大家有所帮助. 三元运算符 三元运算符 ...

  4. es6 Null 传导运算符

    Null 传导运算符 编程实务中,如果读取对象内部的某个属性,往往需要判断一下该对象是否存在.比如,要读取message.body.user.firstName,安全的写法是写成下面这样. const ...

  5. JS-ES2020链判断运算符(?.)和Null判断运算符(??)

    ES2020引入"链判断运算符"(?.) const firstName = message?.body?.user?.firstName || 'default'; const ...

  6. php null运算符,PHP7 Null合并运算符

    在PHP7,一个新的功能,空合并运算符(??)已被引入.它被用来代替三元运算并与 isset()函数功能结合一起使用.如果它存在并且它不是空的,空合并运算符返回它的第一个操作数;否则返回第二个操作数. ...

  7. 为你的项目启用可空引用类型

    为你的项目启用可空引用类型 Intro C# 从 8.0 开始引入了可空引用类型,我们可以为项目启用可空引用类型来借助编译器来帮助我们更好的处理代码中的空引用的处理,可以避免我们写很多不必要 null ...

  8. .NET项目升级手记:可为空引用

    c# 8引入了新特性:"可为空引用"(详情),这个功能个人觉得挺好的,能够非常明确的表现程序设计者的意图,编译器能够进行检查,尽最大可能减小NullReferenceExcepti ...

  9. .net get set 初始化_.NET项目升级:可为空引用

    (给DotNet加星标,提升.Net技能) 转自:波多尔斯基cnblogs.com/podolski/p/12692888.html 前言 C#8引入了新特性:可为空引用 https://docs.m ...

最新文章

  1. java画满天星_java_java实现的满天星效果实例,本文实例讲述了java实现满天星 - phpStudy...
  2. python 调用linux命令-python3调用linux命令——Subprocess
  3. 【网址收藏】WIN10下docker docker-compose docker-machine的安装与使用
  4. 四篇NeurIPS 2019论文,快手特效中的模型压缩了解一下
  5. 《中国人工智能学会通讯》——8.25 基于演化优化的生物网络配准
  6. 全志A33-ARM编译并安装net-tools
  7. 如何通过CSS开启硬件加速来提高网站性能
  8. Java学习笔记1(零碎笔记)——基础
  9. python把csv做成柱状图_用Python的Matplotlib模块实现CSV数据格式的可视化
  10. Python编写编程作业批量自动打分程序的思路与实现
  11. Ext.example.msg()应用
  12. 分享Silverlight/WPF/Windows Phone/HTML5一周学习导读(2月27日-3月4日)
  13. dhcp协议_记录一次DHCP协议的学习过程
  14. Linux目录结构示意详解图
  15. Dgraph安装以及使用1
  16. Atitit.attilax的 case list 项目经验 案例列表
  17. php管理后台,后台管理主页面 admin.php
  18. Win7简单方法让笔记本变身无线热点,共享手机上网
  19. Roberts算子边缘检测原理及实现
  20. 深入浅出AT命令(5)-短信命令

热门文章

  1. 另一个jar包引不了_【夜听三生】知己,是相遇另一个自己
  2. Pycharm设置自动代码提示(超详细)
  3. ACM--steps--dyx--2.3.7--下沙的沙子有几粒?
  4. 数学基础-Jensen不等式
  5. 12天搞定Python,基础语法(上)
  6. 编译库文件时报错move_base: symbol lookup error: undefined symbol:
  7. 浙江计算机专业的大专排名2015,2015浙江省大学学科专业排名
  8. python初学者:打印9*9乘法表的三种方法
  9. 无字天书之Python第十一页(异常处理)
  10. 初学者入门课,Python入门体验之九九乘法表