C# 中?和??的用法

2018-04-18 15:41:40 浏览数 (1)

最近在看官方的源码时,经常看到有

代码语言:javascript复制
Int? sum;

 和

代码语言:javascript复制
FileProvider = FileProvider ??builder.GetFileProvider();

一个问号:

很多数据类型时不允许为空的,比如int类型,在类型的后面加? 表示允许该数据为null

所以

Int? sum的含义时sum可以为int类型也可以为null

 两个问号:

两个数据中间有两个问号,含义是  问号的左边的数据类型为空吗?如果为空,那么返回问号右边的数据,如果不为空,就返回问号左边的数据

所以

FileProvider = FileProvider ??builder.GetFileProvider();

表示  FileProvider为空吗?如果为空,那么FileProvider=builder.GetFileProvider()否则FileProvider = FileProvider

意义和

FileProvider = FileProvider ==null?builder.GetFileProvider():FileProvider;

相同。

0 人点赞