天天看点

可空类型Nullable<T>小结

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。