nullable类型

 
如何在 C-sharp 2.0 中使用可省时防错的 nullable types
作者: Zach Smith, Builder
2006-09-19 11:15 PM
 
 
C# 2.0 出现之前, C# 程序员最感头痛的一件事是不能对某种类型变量指定 null 值。例如:对于 int 类型,则不能对变量赋 null 值。对于 DateTime 对象也是一样。这一限制迫使程序开发员不得不提出自己的方案与在工作区设置一个非 null 变量到 null 。在 C#2.0 中,微软采用一种 nullable 类型弥补了这一缺陷。
Nullable 类型允许分配一个 null 值类型 ,但是这在以前是不允许的。以前有些类型的例子不允许指定 null 值,包括 DateTime int float decimal
使用 Nullable Types
如何使用 nullable 类型呢? C#2.0 提供了一个新的 类型修饰成分(问号)用于指定需要例示的 nullable 类型。下面代码( Figure A )说明了如何使用几种普通的 nullable 类型:
Figure A
几种普通的 nullable 类型
定义 nullable 类型后,则可以将变量的值设置成 null 。以下代码( Figure B )演示如何赋值,以及如何测试 null 变量值。
Figure B
变量检测
请注意,以上显示的 CheckNull 函数参数列表,我们必须使用?修饰成分说明 nullable 类型,如果不使用这个符号,则参数不被认为是 nullable 类型。
Nullable 类型拥有一个称为 HasValue 的属性,如果对象是一个值,则返回真值,如果对象是 null ,则返回 false 值。 HasValue 的使用实例请见于 Figure C
 
Figure C
HasValue
除了
HasValue nullable 类型还包含一个属性 Value ,它返回 nullable 对象的当前值。但是,当对象也被设置成 null 时,调用 value 属性则会跳出一个 InvalidOperationException 异常,并且给出信息: “Nullable 对象必须有值 Figure D 说明了使用 Value 属性的过程。
Figure D
Value property
GetValueOrDefault 也是 nullable 类型的一个属性。这一属性返回对象的当前值;或者,如果对象为 null ,则返回类型的默认值。例如:对于 “int 对象,如果此对象没有值,则其默认值为 0 。请参考以下代码( Figure E )实例。
Figure E
GetValueOrDefault
操作符??
C# 2.0 提出能对 nullable 类型进行操作的新操作符 ?? (双问号)。这个操作符允许将 nullable 类型重新指定为非 nullable 类型,并且如果 nullable 类型的值是 null ,还可以重新定义值。 Figure F 给出了示例
Figure F
操作符 ??
向数据库发送 nullable type
向数据库发送 nullable 类型相当简单。对于 null 值时,则插入 DBNull 即可。为了完成这个任务,我们使用??操作符并且指派( cast DBNull 给对象。这一指派是必须的,因为??操作符的另一端对象需要相兼容。以下代码( Figure G )演示了如何将 nullable 类型作为一个存储程序参数发送到数据库。
Figure G
DBNull 程序
节约时间
本文详细解释 nullable 类型的概念以及使用这些概念的要领。如果操作得当,使用 nullable 类型能够节约开发时间,便于项目维护。在项目开发中大家可以使用它们。
 
 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值