C# 中? 和 ??的区别

背景

最近在调试 C# 项目的时候,发现一个比较关于 ?? 的特殊用法,当时把我给惊到了,所以特意用这篇短短的笔记来记录一下我的解惑过程:

示例代码:

showsomething(isNameNull ?? errorMes);

上面那个就是 ?? 的用法,下面的过程就是我自己解惑的过程,吃一堑长一智!.

?的使用

1. 定义数据类型可为空,目的是用于对 int,double,bool 等无法直接赋值为 null 的类型进行 null 的赋值

 int i ;                 //-->default value is 0   int? valueOfNull;   // --> default value is null

2. 用于判断对象是否为 null,如果对象为 null,则不管调用什么都不会抛出异常,直接返回 null

  Pen redPen = new Pen();       redPen.showColor();            Pen nullPen = null;       nullPen?.showColor();     // 这里将不会引起异常            Pen testNullPen = null;       testNullPen.showColor();     // 这里将会抛出异常

??的使用

1. ??用于判断一个变量为 null 返回一个指定的值

 string name = null;      name = name ?? "Alex";   // --> if name is null, return Alex ; so name = "Alex"

总结

一开始还以为 ? 和 ?? 会有很多的花样呢,原来用起来还是比较简单的,所以通过这短暂的学习,自己还是很快掌握了这些小知识。