VB.NET中的值类型、引用类型与Nullable类型

前端之家收集整理的这篇文章主要介绍了VB.NET中的值类型、引用类型与Nullable类型前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。

VB.NET中有三种数据类型:值类型、引用类型与Nullable类型。本文将从条件判断入手,讨论三者之间的区别。

值类型

继承自System.ValueType的类通常被称为值类型,包括日期与数字。日期型对象的默认值为“0001-01-01 00:00:00”,而数字型对象的默认值为“0”。有两种方法指定值类型的默认值:不设值或设置为Nothing。如:

上面的两个变量值均为“0001-01-01 00:00:00”。将Nothing设置给值类型变量是为其指定默认值,这一点的确有点难以理解,不过确是如此。如下例:

判断值类型变量是否相等只能使用“=”。如:

引用类型

与值类型对应的是引用类型,字符或字符串类型均为引用类型。引用类型的变量保存了对象的地址,将此类变量设置为Nothing时,其指向的就是空地址。

除了使用“=”进行判断外,引用类型的变量还可以通过“Is”进行判断。“ = ”用于比较两个对象的内容是否相同;“Is”则用于比较两个引用是否指向同一个对象。下面的例子可以证明这一点:

Nullable类型

如果想要让值类型的变量具有引用类型的特征,我们可以借助于Nullable类型。如下例:

Nullable类型是一种介于值类型与引用类型之间的类型,我们可以使用“Is”判断Nullable变量是否为Nothing,但不能利用“Is”判断两个Nullable变量是否引用同一个对象;另一方面我们也可以利用“=”判断两个对象的内容是否相同,但某些场合对Nullable变量的判断不会返回我们熟悉的True或False。如下例:

通过查看内存可以知道,上例中 (Tmp = 1) 或 (Tmp <> 1) 返回的都是Nothing,而不是True或者False。这种现象将直接导致误判,如何避免这种现象发生呢?
请使用Nullable类提供的静态方法对Nullable变量进行比较。 上述代码可以如下改造:

总而言之,VB.NET的三种数据类型各有其用法,应特别注意Nullable类型的用法

© 丑小鸭技术专栏 | 查看原文

猜你在找的VB相关文章