c# 中 "?" 的几种用法:

1、可空类型修饰符(?),如:
int? x = null;//可空类型默认值都是null,而值类型如int默认值为0、bool默认值为false等
bool? result = true;

2、三元运算符(?:),如:bool f=false; return f==true?1:0;如果f为true则返回1,否则返回0

3、 空合并运算符(??)
如:a??b 当a为null时则返回b,a不为null时则返回a本身
“a??b??c”的形式按“a??(b??c)”计算

4、NULL检查运算符(?.)
fileInfo?.Close() 当fileInfo不为null是执行Close方法
DateTime? birthday= personList?.FirstOrDefault()?.Birthday;