首页 > Windows开发 > 详细

《刻意练习之C#》-0007- 可为空引用类型

时间:2020-06-01 23:06:29      阅读:73      评论:0      收藏:0      [点我收藏+]

NullReferenceException的困扰

实际项目开发过程中,我们经常会遇到空引用错误:

Solution solution = null;
var result = solution.TwoSumOne(nums, 13);

// 会报以下错误            
Unhandled exception. System.NullReferenceException: Object reference not set to an instance of an object.

  

一般的做法是:

在访问实例成员前,先对实例成员进行判空处理。

if(null != solution)
{
   var result = solution.TwoSumOne(nums, 13);
}

  

如果能在编译时候,就能检查出来可能得空引用,岂不更好?

 

nullable reference type

C# 8.0引入可为空引用类型(nullable reference types)和非空引用类型(non-nullable reference types)。

  • nullable reference type

string? name;
  • 类型后面不带 的变量,都为non-nullable reference type

启用空引用类型

在项目的csproj文件加入一行:

<Nullable>enable</Nullable>

针对代码:

Solution solution = null;
var result = solution.TwoSumOne(nums, 13);

编译后,可以看到编译器会产生两个警告:

Program.cs(13,33): warning CS8600: Converting null literal or possible null value to non-nullable type. 
[/Users/zclmoon/myProjects/algorithm/csharp/TwoSum01/TwoSum.csproj]Program.cs(15,26): 
warning CS8602: Dereference of a possibly null reference. 
[/Users/zclmoon/myProjects/algorithm/csharp/TwoSum01/TwoSum.csproj]

  

 

《刻意练习之C#》-0007- 可为空引用类型

原文:https://www.cnblogs.com/codesee/p/13027436.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!