原文:C# ?和??使用讲解

场景1:使用?定义可空类型

众所周知,C#中的值类型是不可以为null的,如果必须为null,则需要将变量定义为可空类型,如下所示:

int? age = null;

场景2:使用?检查null值

一般我们写代码时,为了避免代码出现空异常System.NullReferenceException,都会写很多的判断语句

Address address = null;
if (address != null)
{
Console.WriteLine(address.PostCode);
} Console.ReadLine();

在C#的新语法中,我们可以通过?来检查null值,这样可以减少很多不必要的判断

Address address = null;
var postCode = address?.PostCode;
Console.WriteLine(postCode); Console.ReadLine();

场景3:使用??设置默认值

在写代码过程中,经常会碰到当变量为null值设置默认值的情况,原来的写法可能是这样的:

int? age = null;
if (!age.HasValue)
{
age = ;
} Console.WriteLine(age); // 输出18 Console.ReadLine();

在C#的新语法中,可以通过??来设置默认值,如果变量值为null,取??右边的值,如果不为null,取变量的值

int? age = null;

Console.WriteLine(age ?? ); // 输出18

age = ;

Console.WriteLine(age ?? ); // 输出20

Console.ReadLine();

最新文章

  1. 【十大经典数据挖掘算法】EM
  2. 解决C# WinForm Graphics绘制闪烁问题
  3. Python网络数据采集系列-------概述
  4. Maven配置Nexus私服
  5. h5视频上传之前端视频压缩研究
  6. Django中提示TemplateDoesNotExist?
  7. 安卓微POS-PDA手持终端,支持离线在线联网销售开单;移动开单 盘点 功能
  8. Validate Binary Search Tree [LeetCode]
  9. jQuery/CSS3大屏下拉菜单 自定义子菜单内容
  10. CH BR8(小学生在上课-逆元和互质数一一对应关系)
  11. [转]关于Icon,Image,ImageIcon的简单的对比参考
  12. ECharts 是一款开源
  13. 在centos7下安装mysql5.7
  14. 如何在windows的DOS窗口中正常显示中文(UTF-8字符)
  15. C语言的指针变量
  16. Apache服务器学习笔记
  17. KoaHub.js可借助 Babel 编译稳定运行在 Node.js 环境上
  18. Linux中的查找命令find
  19. hdu2473
  20. MySQL 日期笔记

热门文章

  1. 8、hzk16的介绍以及简单的使用方法
  2. [Angular2 Form] Reactive Form, show error message for one field
  3. [Angular2 Router] Resolving route data in Angular 2
  4. oracle数据库未打开解决的方法
  5. 我的嵌入式Qt开发第一课——基于BBB和hmc5843三轴电子罗盘
  6. php实现不用加减乘除号做加法(1、善于寻找资源:去搜为什么位运算可以实现加法,里面讲的肯定要详细一万倍)
  7. PHP+Aax实现异步验证
  8. 【t057】任务分配
  9. RAC sysdate
  10. BZOJ 3932 - 主席树