在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();
        }
    }