C# 可空类型
值类型(大多数基本类型,例如,int、double和所有结构)区别于引用类型(string和任意类)的一种方式:值类型必须包含一个值,它们可以在声明之后、赋值之前,在未赋值的状态下存在,但不能使用未赋值的变量。而引用类型可以是mill。
有时让值类型为空是很有用的(尤其是处理数据库时),泛型使用System.Nullable<T>类型提供了使值类型为空的一种方式。例如:
System.Nullable<int> nullablelnt;
这行代码声明了一个变量nullablelnt,它可以拥有int变量能包含的任意值,还可以拥有值null。所以可以编写如下的代码:
nullablelnt = null;
如果nullablelnt是一个int类型的变量,上面的代码是不能编译的。
前面的赋值等价于:
nullablelnt = new System.Nullable<int>();
与其他任意变量一样,无论是初始化为null(使用上面的语法),还是通过给它赋值来初始化,都不能在初始化之前使用它。
可以像测试引用类型一样测试可空类型,看看它们是否为null:
if (nullablelnt == null)
{
...
}
另外,可使用HasValue属性:
if (nullablelnt.HasValue)
{
...
}
这不适用于引用类型,即使引用类型有一个HasValue属性,也不能使用这种方法,因为引用类型的变量值为null就表示不存在对象,当然就不能通过对象来访问这个属性,否则会抛出一个异常。
可使用Value属性来查看可空类型的值。如果HasValue是true,就说明Value属性有一个非空值。但如果 HasValue是felse,就说明变量被赋予了null,访问Value属性会抛出System. InvalidOperationException类型的异常。
可空类型非常有用,以至于它们修改了C#语法。声明可空类型的变量不使用上述语法,而是使用下面的语法:
int? nullablelnt;
其中int ?是System.Nullable<int>的缩写,但更便于读取。
点击加载更多评论>>