
正文
C#中? 和 ??的区别
提示:扫一扫查出行【扫一扫了解最新限行尾号】
复制提示
背景
最近在调试C#项目的时候,发现一个比较关于
??
的特殊用法,当时把我给惊到了,所以特意用这篇短短的笔记来记录一下我的解惑过程;
最近在调试C#项目的时候,发现一个比较关于
??
的特殊用法,当时把我给惊到了,所以特意用这篇短短的笔记来记录一下我的解惑过程;
示例代码:
showsomething(isNameNull ?? errorMes);
上面那个就是
??
的用法,下面的过程就是我自己解惑的过程,吃一堑长一智!
?的使用
-
定义数据类型可为空,目的是用于对
int
,
double
,
bool
等无法直接赋值为
null
的类型进行
null
的赋值
int i ; //-->default value is 0
int? valueOfNull; // --> default value is null
-
用于判断对象是否为
null
,如果对象为
null
,则不管调用什么都不会抛出异常,直接返回
null
Pen redPen = new Pen();
redPen.showColor();
Pen nullPen = null;
nullPen?.showColor(); // 这里将不会引起异常
Pen testNullPen = null;
testNullPen.showColor(); // 这里将会抛出异常
??的使用
-
??
用于判断一个变量为
null
返回一个指定的值
string name = null;
name = name ?? "Alex"; // --> if name is null, return Alex ; so name = "Alex"
总结
定义数据类型可为空,目的是用于对
int
,
double
,
bool
等无法直接赋值为
null
的类型进行
null
的赋值
int i ; //-->default value is 0
int? valueOfNull; // --> default value is null
用于判断对象是否为
null
,如果对象为
null
,则不管调用什么都不会抛出异常,直接返回
null
Pen redPen = new Pen();
redPen.showColor();
Pen nullPen = null;
nullPen?.showColor(); // 这里将不会引起异常
Pen testNullPen = null;
testNullPen.showColor(); // 这里将会抛出异常
-
??用于判断一个变量为null返回一个指定的值string name = null; name = name ?? "Alex"; // --> if name is null, return Alex ; so name = "Alex"
总结
一开始还以为
?
和
??
会有很多的花样呢,原来用起来还是比较简单的,所以通过这短暂的学习,自己还是很快掌握了这些小知识。






