|
如何在
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 类型:
定义
nullable 类型后,则可以将变量的值设置成 null 。以下代码( Figure B )演示如何赋值,以及如何测试 null 变量值。
请注意,以上显示的
CheckNull 函数参数列表,我们必须使用?修饰成分说明 nullable 类型,如果不使用这个符号,则参数不被认为是 nullable 类型。
Nullable
类型拥有一个称为 “ HasValue ” 的属性,如果对象是一个值,则返回真值,如果对象是 null ,则返回 false 值。 “ HasValue ” 的使用实例请见于 Figure C 中 。
除了 “ HasValue ” , nullable 类型还包含一个属性 “ Value ” ,它返回 nullable 对象的当前值。但是,当对象也被设置成 null 时,调用 “ value ” 属性则会跳出一个 InvalidOperationException 异常,并且给出信息: “Nullable 对象必须有值 ” 。 Figure D 说明了使用 “ Value ” 属性的过程。
“ GetValueOrDefault ” 也是 nullable 类型的一个属性。这一属性返回对象的当前值;或者,如果对象为 null ,则返回类型的默认值。例如:对于 “int ? ” 对象,如果此对象没有值,则其默认值为 0 。请参考以下代码( Figure E )实例。
|
提出能对
nullable
类型进行操作的新操作符
“
??
”
(双问号)。这个操作符允许将
nullable
类型重新指定为非
nullable
类型,并且如果
nullable
类型的值是
null
,还可以重新定义值。
Figure F
给出了示例
。
Figure F |
|
操作符 ?? |
nullable type
nullable
类型相当简单。对于
null
值时,则插入
“
DBNull
”
即可。为了完成这个任务,我们使用??操作符并且指派(
cast
)
DBNull
给对象。这一指派是必须的,因为??操作符的另一端对象需要相兼容。以下代码(
Figure G
)演示了如何将
nullable
类型作为一个存储程序参数发送到数据库。
Figure G |
|
DBNull 程序 |
nullable
类型的概念以及使用这些概念的要领。如果操作得当,使用
nullable
类型能够节约开发时间,便于项目维护。在项目开发中大家可以使用它们。
发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/224446.html原文链接:https://javaforall.net

