C#2.0-可空类型

  可空类型是 <mshelp:link keywords="T:System.Nullable`1">System.Nullable</mshelp:link> 结构的实例。可空类型可以表示其基础值类型正常范围内的值,再加上一个 null 值。例如,Nullable<Int32>,读作“可空的 Int32”,可以被赋值为 -2147483648 到 2147483647 之间的任意值,也可以被赋值为 null 值。Nullable<bool> 可以被赋值为 true 或 false,或 null。在处理数据库和其他包含可能未赋值的元素的数据类型时,将 null 赋值给数值类型或布尔型的功能特别有用。例如,数据库中的布尔型字段可以存储值 true 或 false,或者,该字段也可以未定义。

可空类型具有以下特性:

  1. 可空类型表示可被赋值为 null 值的值类型变量。无法创建基于引用类型的可空类型。(引用类型已支持 null 值。)。

  2. 语法 T? 是 System.Nullable<T> 的简写,此处的 T 为值类型。这两种形式可以互换。

  3. 为可空类型赋值与为一般值类型赋值的方法相同,如 int? x = 10; double? d = 4.108;

  4. 如果基础类型的值为 null,请使用 <mshelp:link keywords="M:System.Nullable`1.GetValueOrDefault">System.Nullable.GetValueOrDefault</mshelp:link> 属性返回该基础类型所赋的值或默认值,例如 int j = x.GetValueOrDefault();

  5. 请使用 <mshelp:link keywords="P:System.Nullable`1.HasValue">HasValue</mshelp:link> 和 <mshelp:link keywords="P:System.Nullable`1.Value">Value</mshelp:link> 只读属性测试是否为空和检索值,例如 if(x.HasValue) j = x.Value;

    • 如果此变量包含值,则 HasValue 属性返回 True;或者,如果此变量的值为空,则返回 False。

    • 如果已赋值,则 Value 属性返回该值,否则将引发 <mshelp:link keywords="T:System.InvalidOperationException">System.InvalidOperationException</mshelp:link>。

    • 可空类型变量的默认值将 HasValue 设置为 false。未定义 Value。

  6. 使用 ?? 运算符分配默认值,当前值为空的可空类型被赋值给非空类型时将应用该默认值,如 int? x = null; int y = x ?? -1;

  7. 不允许使用嵌套的可空类型。将不编译下面一行:Nullable<Nullable<int>> n;

            

以上将显示输出:

num = Null

Nullable object must have a value.

装箱和取消装箱

  在对可空类型进行装箱时,公共语言运行库自动将 Nullable 对象的基础值(而不是 Nullable 对象本身)装箱。也就是说,如果 HasValue 属性为 true,则将 Value 属性的内容装箱。如果 HasValue 属性为 false,则将空引用(在 Visual Basic 中为 Nothing)装箱。在对可空类型的基础值进行取消装箱时,公共语言运行库创建一个新的初始化为基础值的 Nullable 结构。

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值