如何在
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
中
。
“
GetValueOrDefault
”
也是
nullable
类型的一个属性。这一属性返回对象的当前值;或者,如果对象为
null
,则返回类型的默认值。例如:对于
“int
?
”
对象,如果此对象没有值,则其默认值为
0
。请参考以下代码(
Figure E
)实例。
|
操作符??
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
类型能够节约开发时间,便于项目维护。在项目开发中大家可以使用它们。