C# in Depth Third Edition 学习笔记-- 可空类型
2014-07-25 13:43
411 查看
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操作符:空值或是有意义的值
客户下了一份订单,有订货日期,但尚未发货,但没有发货日期,怎么表述发货日期? 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操作符:空值或是有意义的值
相关文章推荐
- C# in Depth Third Edition 学习笔记-- 值类型和引用
- C# in Depth Third Edition 学习笔记-- Lambda表达式和表达式树
- C# in Depth Third Edition 学习笔记-- C#2的一些特性
- C# in Depth Third Edition 学习笔记-- C#2.0: 解决C#1.0的问题 1 泛型
- C# In Depth Third Edition
- C#学习笔记之类型篇
- CLR via C# 学习笔记----Nullable Value Types可以指定为Null的值类型
- Professional C# 学习笔记(三 c#对象和类型)
- C# Delegates And Events in Depth[翻译加笔记]【Delegate】【1】
- C#及.NET学习笔记之从C#2.0角度看.NET2.0类型系统
- [学习笔记]Asp.net(C#)菜鸟进级系列之值类型
- 学习笔记——关于C#中的两个short类型相加变成了int类型
- “Effective C++ Third Edition”学习笔记(二)
- C#学习笔记 —— 值类型和引用类型
- “Effective C++ Third Edition”学习笔记(一)
- C#学习笔记---数据类型
- C# in depth 阅读笔记-- 委托
- C#学习笔记: 数据类型的一些说明
- CLR Via C# 学习笔记(1) 基元类型 值类型 引用类型
- 工作学习笔记——C#自定义类型剪贴板操作、自定义鼠标光标定位问题