1 可空类型的声明
public struct Nullable<T> where T: struct
T为结构体,所以只有值类型才可以使用Nullable<T>声明为“可空类型”。
2 可空类型的作用
可空类型在基元类型正常值范围外加上了空值null。
使用可空类型,接收数据库的可空字段值时更加方便。
3 可空类型与基元类型的转换
基元类型可以隐式转换为其对应的可空类型。
可空类型不可以隐式转换为对应的基元类型。
Nullable<int> a = null;// 可空类型,包含空值null
int b = 1;//基元类型
a = b;//转换成功
b = a;//转换失败
4 T?
T?是Nullable<T>的简写,两者可互换。
int? a = null;
5 T??
int b = a ?? 1;
相当于:
if (a.HasValue)
{
b = a.Value;
}
else
{
b = 1;
}
意思是:
如果a.HasValue为true,则将a.HasValue赋值给b,否则将1赋值给b。