定义一个nullable类型非常类似于定义一个非nullable类型。不同之处在于使用类型修饰符“?”。比如定义一个整型如下:
int myInt = 1;
要使一个整型变量可以存储一个null值,可以如下声明:
int? myNullableInt = 1;
这两个变量看起来似乎是一样的。但事实并非如此。实际上,Nullable类型是一个结构体,它有两个公开可读字段:HasValue和Value。HasValue是一个布尔值,当有值存储时它为真,当变量值为null时HasValue为假。当HavValue为真是时,可以取得变量的值;为假时,当尝试取得变量的值时会抛出一个异常。
现在null是C#的一个关键字,它可以被赋给一个Nullable型变量。下面是对Nullable型变量赋值的两种有效方式。
double? myDouble = 3.14159;
double? myOtherDouble = null;
可以看到,myDouble被赋给一个值,它也可以被赋以null。在第二个语句中,myOtherDouble被初始化为null——在一个非Nullable型变量中这样做会产生异常。
时间: 2024-12-28 15:30:39