WeihanLi.Npoi 1.14.0 Release Notes

Intro

周末更新了一下项目,开始使用可空引用类型,并且移除了 net45 的支持,仅支持 netstandard2.0

Changes

Remove net45 Support

基础库打算移除 net45 的支持,因为很多基础的API,在 netstandard2.0 中是有的,但是 net45 是没有的,所以很多时候需要为 net45 专门写一些代码来实现类似的功能,而且随着 .NET Core 的开发者越来越多,.NET Core 越来越成熟,所以打算抛弃 net45 也可以使得维护更为方便和简单。

Nullable Reference

新版本完全启用了 Nullable Reference Types 可空引用类型,之所以启用可空引用类型,一来是希望能够为开发者们使用提供更好的体验,开发者在开发的时候,就可以知道自己用到的 API 输入参数是否允许为 null,如果不允许为 null 开发者可以在调用 API 之前检查 null,避免输入一个不期望的 null ,对于 API 的返回值也会更加清晰,可以清晰地了解一个 API 的返回值是否会为 null,如果会为 null 则可能需要做空检查,如果不会为 null 就不需要做不必要的空检查了。

Sample

提供了一个示例项目,示例项目是 dotnet core 3.1 的项目,并且并没有启用可空引用类型,下面是一段示例代码:

var workbook = ExcelHelper.LoadExcel(excelPath:null);

if (workbook is null)
{
Console.WriteLine("workbook is null");
}

IWorkbook ExcelHelper.LoadExcel(string excelPath) 这个 API 的输入参数期待的是一个不可空引用类型,返回值是一个不为空的引用类型,虽然示例项目并没有启用可空引用类型,VS 也是会给出一些提示的,提示如下:

如果将一个 null 传递给一个是不可空引用类型的值会怎么样呢,这取决于实现代码的处理,在前面一篇文章我已经提到过了,期望输入值是不可空引用类型时,依然需要做必要的空检查,实际改造的时候我也是这么做得,如果不可空引用类型接收了一个 null 基本都会获得一个 ArgumentNullException

上述代码执行结果输出如下:

More

从上面的示例可以看的出来,可空引用类型能够为我们带来很大的便利,而且也可以增加程序的健壮性,通过 VS 的提示,启用可空类型可以将提示提升为 Warning 更好的提升代码可靠性,也可以减少很多不必要的空检查,通过启用可空引用类型,也让我修复了一些原本代码中缺少的检查,进一步增强了代码的健壮性。

References

WeihanLi.Npoi 1.14.0 Release Notes的更多相关文章

  1. WeihanLi.Npoi 1.16.0 Release Notes

    WeihanLi.Npoi 1.16.0 Release Notes Intro 最近有网友咨询如何设置单元格样式,在之前的版本中是不支持的,之前主要考虑的是数据,对于导出的样式并没有支持,这个 is ...

  2. WeihanLi.Npoi 1.11.0/1.12.0 Release Notes

    WeihanLi.Npoi 1.11.0/1.12.0 Release Notes Intro 最近 NPOI 扩展新更新了两个版本,感谢 shaka chow 的帮忙和支持,这两个 Feature ...

  3. Git for Windows v2.11.0 Release Notes

    homepage faq contribute bugs questions Git for Windows v2.11.0 Release Notes Latest update: December ...

  4. ASP.NET Core 1.1.0 Release Notes

    ASP.NET Core 1.1.0 Release Notes We are pleased to announce the release of ASP.NET Core 1.1.0! Antif ...

  5. Yasm 1.3.0 Release Notes

    Yasm 1.3.0 Release Notes http://yasm.tortall.net/releases/Release1.3.0.html Target Audience Welcome ...

  6. WeihanLi.Npoi 1.7.0 更新

    WeihanLi.Npoi 1.7.0 更新介绍 Intro 昨天晚上发布了 WeihanLi.Npoi 1.7.0 版本,增加了 ColumnInputFormatter/ColumnOutputF ...

  7. WeihanLi.Npoi 1.10.0 更新日志

    WeihanLi.Npoi 1.10.0 更新日志 Intro 上周有个网友希望能够导入Excel时提供一个 EndRowIndex 来自己控制结束行和根据字段过滤的,周末找时间做了一下这个 feat ...

  8. WeihanLi.Npoi 1.13.0 更新日志

    WeihanLi.Npoi 1.13.0 更新日志 Intro 在 Github 上收到 Issue 收到网友反馈希望支持自动分 Sheet 导出,有兴趣的可以参考 Issue https://git ...

  9. MongoDB 3.0 Release Notes

    MongoDB 3.0支持WiredTiger存储引擎,提供可插拔存储引擎API,新增SCRAM-SHA-1认证机制,改进explain功能. 可插拔存储引擎API 允许第三方为MongoDB开发存储 ...

随机推荐

  1. 第一篇:docker 简单入门(一)

    本篇目录 写在最前面的话 docker概念介绍 镜像的概念.容器的概念 docker的安装介绍 写在最前面的话 由于此类文章博客园鉴定为简单文章,所以已经移到csdn[https://blog.csd ...

  2. C语言服务器编程必备常识

    入门 包含了正确的头文件只能编译通过,没链接正确的库链接会报错. 一些常用的库gcc会自动链接. 库的缺省路径/lib /usr/lib /usr/local/lib 不知道某个函数在那个库可以nm ...

  3. Spark内核-内存管理

    Spark 集群会启动 Driver 和 Executor 两种 JVM 进程 我们只关注Executor的内存. 分为堆内内存和堆外内存 内存分为 存储内存 : 存储数据用的. 执行内存: 执行sh ...

  4. Durid的特点

    Durid的特点 1.为什么会有Durid? 创建Druid的最初意图主要是为了解决查询延迟问题,当时试图使用Hadoop来实现交互式查询分析,但是很难满足实时分析的需要.而Druid提供了以交互方式 ...

  5. Kafka高性能的原理

    Kafka高性能的原理 高性能,高并发,高可用 使用了NIO技术.高并发. 顺序读写.硬盘的顺序读写性能要高于内存的随机读写. 跳表设计. 稀疏索引.index文件里面有部分offset的位置. 使用 ...

  6. zabbix学习(一)——LNMP环境搭建及zabbix安装

    第一部分:LNMP环境搭建 一.环境说明: OS:   centos7.6_x64nginx:nginx-1.16.0php:   php-7.1.11mysql:mysql-5.6.44 zabbi ...

  7. Visual Studio 2013中安装Resharper之后一些快捷键无法使用,比如F6和F12

    快捷键是一个很好用的东西,尤其对于计算机从业者来说,好的快捷键能够高程度提高工作效率.像我们程序员经常需要团队开发,我们会遇到一个问题,那就是快捷键不一致问题,我一般会安装resharper,但是有的 ...

  8. 浅谈 WebRTC 的 Audio 在进入 Encoder 之前的处理流程

    在 WebRTC 中,Audio 数据在被送入编码器之前,有 2 大部分需要特别关注,一是数据采集,二是 Audio Processing. 作者:方来,技术专家,从事 voip 应用开发. 数据采集 ...

  9. 常见编译器EOP

    delphi:  55            PUSH EBP  8BEC          MOV EBP,ESP  83C4 F0       ADD ESP,-10  B8 A86F4B00  ...

  10. python保存二维列表到txt文件,读取txt文件里面的数据转化为二维列表

    源码: # 读文件里面的数据转化为二维列表 def Read_list(filename): file1 = open(filename+".txt", "r" ...