在C#1.x,一个值类型变量是不可以被赋予null值的,否则会产生异常。
在C#2.0中,提供了Nullable类型,允许用它定义包含null值(即空值)的数据类型,这对处理数据库中包含可选字段以及很多方面都有帮助。
定义一个nullable类型,使用类型修饰符“?”;
比如定义一个整型如下:
int myInt = 1;
要使一个整型变量可以存储一个null值,可以如下声明:
int? myNullableInt= 1;
这两个变量看起来似乎是一样的。但事实并非如此。实际上Nullable类型是一个结构体,它有两个公开可读字段:HasValue和Value。 HasValue是一个布尔值,当有值存储时它为真,当变量值为null时HasValue为假。当HavValue为真是时,可以取得变量的值;为假时,当尝试取得变量的值时会抛出一个异常。
看一下示例;
using System;
class Demo
{
static void Main(string[] args){
int? num1;
int? num2 = 123;
num1 = null;
double? num3 = null;
double? num4 = 3.1415926;
Console.WriteLine("num1 = {0} \r\n num2 = {1} \r\n num3 = {2} \r\n num4 = {3}", num1, num2, num3, num4);
Console.ReadLine();
}
}