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
最新文章
- npm 发布到远程资源库
- Windows Server 2012 R2桌面化详细设置图解
- SQL语句中:UNION与UNION ALL的区别
- 最短路径问题——dijkstra算法
- VBS数组
- JavaScript设计模式的简单理解
- [SQL]SQL优化34条
- JAVA中求解对象所占字节大小
- [Ruby on Rails系列]5、专题:Talk About SaSS
- POJ 1250 Tanning Salon
- CacheManager
- Sangmado 公共基础类库
- 解说asp.net core MVC 过滤器的执行顺序
- Java深入 - MyBatis的经常用法
- 干货 | SSMS客户端连接京东云RDS SQL Server配置方法
- Win10配置ADB工具教程
- lucene和solr的区别(六)
- django基础使用
- 关于tp5 的验证码遇到的一些问题
- tail -f 与 tail -F的区别
热门文章
- centos 7 安装vncserver遇到错误解决
- <;未解决的问题>;crontab 定时弹框任务
- Python实现全自动购买火车票!抢票回家过年咯
- pytorch固定BN层参数
- 第一个开源控件:Google 官方下拉刷新控件 SwipeRefreshLayout 强化版,支持上拉刷新
- 区块链从零开始做开发(0):hyperledger Fabric2.3安装
- flowable中使用到的一些方法。获取人员部门信息
- Redis中的常用命令哪些?
- 关于char是否能表示一个中文
- Jenkins+GitLab+SonnarQube搭建CI/CD全流程