Nullable<T>是一个结构,且是一个值类型
下面举一些关于可空类型的装箱和拆箱行为
//有值的可空变量
Nullable<int> nullable = 5;
//将值类型转换成引用类型就是装箱
//将引用类型转换成值类型就是拆箱
//装箱成“有值的可空类型的实例”
object boxed = nullable;
Console.WriteLine(boxed.GetType());
//int类型是非可空变量
//拆箱成非可空变量
int normal = (int)boxed;
Console.WriteLine(normal);
//Nullable<T> 是可空变量
//拆箱成可空变量
nullable = (Nullable<int>)boxed;
Console.WriteLine(nullable);
nullable = new Nullable<int>();
//装箱成“没有值的可空类型的实例”
boxed = nullable;
Console.WriteLine(boxed==null);
//拆箱成可空变量
nullable = (Nullable<int>)boxed;
Console.WriteLine(nullable.HasValue);