WeihanLi.Npoi 1.14.0 Release Notes
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
- https://docs.microsoft.com/en-us/dotnet/csharp/nullable-references
- https://docs.microsoft.com/en-us/dotnet/csharp/tutorials/upgrade-to-nullable-references
- https://docs.microsoft.com/en-us/dotnet/csharp/nullable-migration-strategies
- https://github.com/dotnet/aspnetcore/issues/5680
- https://github.com/WeihanLi/WeihanLi.Npoi/pull/98
- https://www.nuget.org/packages/WeihanLi.Npoi/1.14.0
WeihanLi.Npoi 1.14.0 Release Notes的更多相关文章
- WeihanLi.Npoi 1.16.0 Release Notes
WeihanLi.Npoi 1.16.0 Release Notes Intro 最近有网友咨询如何设置单元格样式,在之前的版本中是不支持的,之前主要考虑的是数据,对于导出的样式并没有支持,这个 is ...
- 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 ...
- Git for Windows v2.11.0 Release Notes
homepage faq contribute bugs questions Git for Windows v2.11.0 Release Notes Latest update: December ...
- 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 ...
- Yasm 1.3.0 Release Notes
Yasm 1.3.0 Release Notes http://yasm.tortall.net/releases/Release1.3.0.html Target Audience Welcome ...
- WeihanLi.Npoi 1.7.0 更新
WeihanLi.Npoi 1.7.0 更新介绍 Intro 昨天晚上发布了 WeihanLi.Npoi 1.7.0 版本,增加了 ColumnInputFormatter/ColumnOutputF ...
- WeihanLi.Npoi 1.10.0 更新日志
WeihanLi.Npoi 1.10.0 更新日志 Intro 上周有个网友希望能够导入Excel时提供一个 EndRowIndex 来自己控制结束行和根据字段过滤的,周末找时间做了一下这个 feat ...
- WeihanLi.Npoi 1.13.0 更新日志
WeihanLi.Npoi 1.13.0 更新日志 Intro 在 Github 上收到 Issue 收到网友反馈希望支持自动分 Sheet 导出,有兴趣的可以参考 Issue https://git ...
- MongoDB 3.0 Release Notes
MongoDB 3.0支持WiredTiger存储引擎,提供可插拔存储引擎API,新增SCRAM-SHA-1认证机制,改进explain功能. 可插拔存储引擎API 允许第三方为MongoDB开发存储 ...
随机推荐
- css 01-CSS属性:字体属性和文本属性
01-CSS属性:字体属性和文本属性 #本文重要内容 CSS的单位 字体属性 文本属性 定位属性:position.float.overflow等 #CSS的单位 html中的单位只有一种,那就是像素 ...
- IphoneX适配正确姿势
IphoneX适配正确姿势 写在前面 距离18年9月iphonex发布以来已经快两年了(所以对于iphonex机型的头部刘海(sensor housing)和底部小黑条(Home Indicator) ...
- 使用Github快速的寻找项目
作为一个3年的码农昨天在学习项目,顺便总结一下 ,在Github找项目的几个常用方式 ,如果对您有帮助,可以点个关注,便于下次光顾! 首先我们来看一下常用命令 1.指定搜索方式 搜索文件中有spiri ...
- Asp.Net Core仓储模式+工作单元
仓储模式+工作单元 仓储模式 仓储(Repository)模式自2004年首次作为领域驱动模型DDD设计的一部分引入,仓储本质上是提供提供数据的抽象,以便应用程序可以使用具有接口的相似的简单抽象集合. ...
- jQuery中live()使用报错,TypeError: $(...).live is not a function
原博文 https://blog.csdn.net/sdfdyubo/article/details/59536781 使用 原写法 /*为选项卡绑定右键*/ $(".tabs li&quo ...
- CentOS7 实战部署tomcat网站服务器
简介:实战演练tomcat网站服务器的搭建 Tomcat:是一个开源免费的Web应用服务器,性能稳定,是目前比较流行的Web应用服务器 tomcat官网下载: https://tomcat.apa ...
- linux下eclipse
最近想学习C++,所以就重新安装了linux系统,虽然这两者没有什么联系,但是我还是比较喜欢linux系统,所以在linux下安装了Eclipse,想起了当初学习Red Hat 9.0时的痛苦场景,哎 ...
- 详解CSS布局
CSS页面布局允许我们拾取网页中的元素,并且控制它们相对正常布局流.周边元素.父容器或者主视口/窗口的位置.主要对文档流的改变进行布局.假设你已经掌握了CSS的选择器.属性和值,并且可能对布局有一定了 ...
- Spring Cloud Gateway应用篇(十三)
一.概述 在微服务架构中,每个服务都是一个可以独立开发和运行的组件,而一个完整的微服务架构由一系列独立运行的微服务组成.其中每个服务都只会完成特定领域的功能,比如订单服务提供与订单业务场景有关的功能. ...
- 循序渐进VUE+Element 前端应用开发(32)--- 手机短信动态码登陆处理
在一些系统中,有时候用户忘记密码,可以通过向自己手机发送动态验证码的方式实现系统登录功能.本篇随笔介绍如何结合后端ABP框架的短信发送和缓存模块的处理,实现手机短信动态码登陆处理. 一般的登录方式,分 ...