在古时候,引用类型是的默认值就是null,值类型是不可以赋值null的,所以那时候,“未将对象引用到实例”这个错误,是引用类型的。后来,值类型也可以赋值null了,只要在值类型变量定义的时候,加个?就可以,比如 int? i=null。到了c#8.0,引用类型又引入了可null引用类型,这里的意思不是引用类型不可以赋值null了,而是当使用可null引用类型时,不会报“未将对象引用到实例”的错误了。

非null引用类型demo

可null引用类型demo

.net6到来时,每个项目默认是支持可null引用类型的,在.csproj中有一个配置:<Nullable>enable</Nullable>,这样引入的好处是显而易见的,就会报空引用异常,但可能对于问题的排查带来一定的难度,不过换个角度,如果我们能按业务要求有效的验证非空,让不该空的有验证,让可空的不报错,从而来提升服务质量,岂不更好。

对于一些集合数组类型的使用,也有所区别,用for循环就能有效处理空引用的异常。

using static System.Console;Order? order = null;
PrintOrder(order);static void PrintOrder(Order? order)
{WriteLine($"OrderNo:{order?.OrderNo},Amount:{order?.Amount},OrderTime:{order?.Amount}");//这还是会发空引用异常//foreach (var detail in order?.Details)//{//    WriteLine($"GoodsID:{detail.GoodsID},Quantity:{detail.Quantity},Price:{detail.Price}");//}//这样就不会引发空引用异常for (int i = 0; i < order?.Details?.Count; i++){var detail = order.Details[i];WriteLine($"GoodsID:{detail.GoodsID},Quantity:{detail.Quantity},Price:{detail.Price}");}
}public class Order
{public string? OrderNo { get; set; }public decimal Amount { get; set; }public DateTime OrderTime { get; set; }public List<OrderDetail>? Details { get; set; }
}public class OrderDetail
{public string? GoodsID { get; set; }public int Quantity { get; set; }public decimal Price { get; set; }
}

缕一缕c#可null类型相关推荐

  1. java中的null类型---有关null的9件事

    摘自 https://blog.csdn.net/qq_25077777/article/details/80174763 今天听到一个问题,java中的null类型,null竟然是一种类型 java ...

  2. java 类 null_深入理解java中的null“类型”

    本文研究的主要是java中的null"类型"的相关实例,具体介绍如下. 先给出一道简单的null相关的题目,引发我们对null的探讨,后面会根据官方语言手册对null"类 ...

  3. Python中的null类型

    问题描述:Python代码中我们想为一个字段赋为null,如下所示这个适合可能会报错: json.dumps({"name": "","age&quo ...

  4. 详细了解java中的null_深入理解java中的null“类型”

    本文研究的主要是java中的null"类型"的相关实例,具体介绍如下. 先给出一道简单的null相关的题目,引发我们对null的探讨,后面会根据官方语言手册对null"类 ...

  5. clickhouse建表,字段类型设置为可为null类型

    clickhouse建表,字段类型设置为可为null类型 基于对clickhouse中的表进行插入或者更新操作时,对于null值插入或者更新出现的问题进行处理,所以在建表的时候对字段进行表明,设置为可 ...

  6. JavaScript数据类型 - Null类型

    Null类型 Null 类型是第二个只有一个值的数据类型,这个特殊的值就是null.从逻辑角度来看,null值表示一个空对象指针,而这也正是使用typeof检测null值时返回object的原因,如下 ...

  7. JavaScript(二)undefined类型、null类型

    1.概述 1.undefined类型 undefined在声明变量但未对其加以初始化时,这个变量的值就是undefined. 字面量undefined的主要目的是用于比较. 包含undefined值的 ...

  8. (myconnpy出现,pymysql可以入冷宫了)打个小补丁,让pymysql正确处理日期类型和NULL类型 - MK2 - 博客园...

    (myconnpy出现,pymysql可以入冷宫了)打个小补丁,让pymysql正确处理日期类型和NULL类型 - MK2 - 博客园 (myconnpy出现,pymysql可以入冷宫了)打个小补丁, ...

  9. python自定义类型转换_Python JSONDecoder自定义null类型的转换

    更新12/30/2014 实现这一目标的最简单方法是使用JSONDecoder的object_hook回调,如下面的旧答案中所述.但是,由于这需要对数据中的每个键值对进行额外的函数调用,这可能会对性能 ...

最新文章

  1. 1.2.3 TCP/IP参考模型和五层参考模型
  2. python windows ui自动化_appium+python+windows UI自动化 四.简单使用Appium客户端
  3. 2018-03-03-解决win下凭据删除不干净而无法登录共项目录的问题
  4. 《利用python进行数据分析》读书笔记--第十章 时间序列(二)
  5. boost::graph模块实现读graph文件.dat的测试程序
  6. mybatis应用(二)注解的实现
  7. cmd小游戏_使用pygame制作Flappy bird小游戏
  8. Restlet Client 安装 网盘里面有压缩文件夹下载引用即可 谷歌浏览器
  9. 一杯水怎么测试_一杯水就能鉴别翡翠真假的高招
  10. springcloud20---Config加入eureka
  11. python 循环播放音乐_python gstreamer实现视频快进/快退/循环播放功能
  12. 安装Docker Desktop报错WSL 2 installation is incomplete
  13. 20200708每日一句
  14. JSR303数据校验
  15. 网络中的延迟和抖动问题
  16. mc小刘yeah粉丝网
  17. html中input type什么意思,HTML中type是什么意思
  18. 【C++进阶知识】C++类的继承和派生
  19. shell编程100例(附PDF下载)
  20. 计算机网络验证性试验

热门文章

  1. 模式识别之分类---数学贝叶斯方法
  2. SAP中查询用户操作日志的事务码
  3. dwr 写的小程序,配置
  4. C++ virtual笔试
  5. CISCO IOS SLB服务器负载均衡
  6. Javascript基础学习20问(二)
  7. MySQL For RedHat Linux(源码安装,附安装包)
  8. MVC-控制器向View传值的三种方法
  9. Kinect开发笔记之三Kinect开发环境配置详解
  10. Microsoft Teams:团队Owner离开公司后,我们该怎么做?