.net 2.0中,有新增的nullable类型,主要可以用为基本的值类型赋予null的值,比如
int? k = 3;//一个可为空的值类型(简称空类型)
int m = null;//错误
int? j = null;//成功
从上面的例子我们可以看到在值类型后可以定义一个可为空的值类型,在c#中,是在基本类型后加一个?号,而在vb.net中,可以这样
dim dtmvarname as nullable(of datetime)
dim intvarname as nullable(of integer)
dim bvarname as nullable(of boolean)
要注意的是,空类型不是一种新的.net数据类型。
实际上空类型是定义在.net库中的一种范型类system.nullable<t>,其中t就是可替换的值类型。
int? k = 3;同样可以写作system.nullable<int> k = 3;
其中的操作是通过该类的运算符重载实现的
可以用hasvalue来判断空类型中是否已经有赋值了
if (dtmvarname.hasvalue)
{
//…do something
}