C#中,?有两个含义:
?的第一个含义:?表示该类型可空(可为null),用法为T?。
例如,int类型是值类型(不可为null),但int?类型可以为空(可为null)。
举例:
int a = 3;(编译通过)
int b = null;(编译报错)
int? c = null;(编译通过)
?的第二个含义:组成三元运算符,即表达式1 ? 表达式2 : 表达式3
例如:a = b ? c : d;该语句的含义是:如果b为true,则a = c;如果a为false,则a = d。
举例:
int a = 2 < 3 ? 4: 5;(结果是a = 4)
int b = 2 > 3 ? 4 : 5;(结果是a = 5)
----------------------------------------------------------------------------分割线----------------------------------------------------------------------------
C#中??是空合并运算符(一个二元运算符),含义是:如果左操作数不为null,则返回左操作数;否则,返回右操作数。
举例:
string str1 = null;
string str2 = "hello";
string str3 = str1 ?? str2;(结果是hello)
string str4 = str2 ?? str1;(结果是hello)