一、可空类型修饰符
可以让一个值类型赋值为null,例如给一个struct赋值为null或判断一个struct是否被赋过值
if(m_TestStruct != null) { }
"?"单问号:声明该值类型为可空类型
static void Main(string[] args)
{
int? a = null;
if (a == null)
{
Console.WriteLine("a为null");
}
Console.ReadKey();
}
声明一个可空类型有以下三种方式:
int? a = null;
int? b = new int?();
Nullable<int> c = new Nullable<int>();
二、空合并运算符
"??"双问号(空合并运算符):类似于条件表达式,可以判断当一个类型为null时返回另一个值
static void Main(string[] args)
{
int? a = null;
int? b = 1;
int c = 2;
int d = a ?? c;
int e = b ?? c;
Console.WriteLine(d);
Console.WriteLine(e);
Console.ReadKey();
}
注意:
- "??"的前面一个值必须是可空类型
- 空合并运算符为右结合运算符:a??b??c = a??(b??c)
- a??b??c??d??..??z的意义是返回第一个非空字符