• 欢迎访问开心洋葱网站,在线教程,推荐使用最新版火狐浏览器和Chrome浏览器访问本网站,欢迎加入开心洋葱 QQ群
  • 为方便开心洋葱网用户,开心洋葱官网已经开启复制功能!
  • 欢迎访问开心洋葱网站,手机也能访问哦~欢迎加入开心洋葱多维思维学习平台 QQ群
  • 如果您觉得本站非常有看点,那么赶紧使用Ctrl+D 收藏开心洋葱吧~~~~~~~~~~~~~!
  • 由于近期流量激增,小站的ECS没能经的起亲们的访问,本站依然没有盈利,如果各位看如果觉着文字不错,还请看官给小站打个赏~~~~~~~~~~~~~!

WeihanLi.Npoi 1.14.0 Release Notes

其他 WeihanLi 1275次浏览 0个评论

WeihanLi.Npoi 1.14.0 Release Notes

Intro

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

Changes

Remove net45 Support

基础库打算移除 net45 的支持,因为很多基础的API,在 netstandard2.0 中是有的,但是 net45 是没有的,比如 Array.Empty/Task.CompletedResult 等,所以很多时候需要为 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 也是会给出一些提示的,提示如下:

WeihanLi.Npoi 1.14.0 Release Notes

WeihanLi.Npoi 1.14.0 Release Notes

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

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

WeihanLi.Npoi 1.14.0 Release Notes

More

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

示例代码可以从 https://github.com/WeihanLi/SamplesInPractice/blob/master/NPOISample/NPOIExtensionSample.cs 获取,可以自行测试

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
  • https://github.com/WeihanLi/SamplesInPractice/blob/master/NPOISample/NPOIExtensionSample.cs


开心洋葱 , 版权所有丨如未注明 , 均为原创丨未经授权请勿修改 , 转载请注明WeihanLi.Npoi 1.14.0 Release Notes
喜欢 (0)

您必须 登录 才能发表评论!

加载中……