首页 > 代码库 > C# in Depth Third Edition 学习笔记-- 可空类型

C# in Depth Third Edition 学习笔记-- 可空类型

1. 没有值怎么办?

    客户下了一份订单,有订货日期,但尚未发货,但没有发货日期,怎么表述发货日期? C#2以后使用可空类型。

2. 为什么值类型的变量不能是null?

   引用类型变量,其值是一个引用,即一个非空引用值提供了访问一个对象 的途径,对于null来说,作为一个特殊值,意味着不引用任何对象。所有引用的默认值都为null,内存中表示全零。

   值类型变量,其值是它本身的真实数据。null不是有效的值类型的值。

3. C#1 解决不存在可空值类型

    魔值:DateTime,牺牲公元元年中的某个值DateTime.MinValue来表示空值。

    引用类型包装:需要进行装箱和拆箱

    额外的布尔标志:一般做法是将值和标志封装到另外一个值类型中。

4. System.Nullable<T>和System.Nullable

    Nullable<T>是一个泛型类型,T有一个值类型约束,所以不能使用Nullable<Stream>或Nullable<Nullalbe<int>>。其有两个重要属性,HasValue和Value。Nullable<T>仍然是一个值类型。

    ?修饰符: int? nullable=5;

    对可空类型使用as操作符:空值或是有意义的值