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

Creative Commons License

 

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类型的用法。

 

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

  • 2
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值