使用HasValue和Value只读属性测试是否为空和检索值。
对null值的对象调用Value属性会抛出System.InvalidOperationException,此时应使用GetValueOrDefault()方法返回该基础类型所赋的值或默认值。
空结合运算符(??)放在两个操作数之间,第一个操作数必须是一个可空类型或引用类型,第二个操作数必须与第一个操作数的类型相同,或者可以隐式地转换为第一个操作数的类型。如果第一个操作数不是null,取第一个操作数的值;否则,取第二个操作数的值。
一个使用可空类型和空结合运算符的例子如下:
int? a = null;
int b = a.HasValue ? a.Value : a.GetValueOrDefault();
int c = a ?? b;