Chinaunix首页 | 论坛 | 博客
  • 博客访问: 479384
  • 博文数量: 112
  • 博客积分: 5696
  • 博客等级: 大校
  • 技术积分: 1720
  • 用 户 组: 普通用户
  • 注册时间: 2007-08-17 09:58
文章分类

全部博文(112)

文章存档

2011年(22)

2010年(28)

2009年(21)

2008年(41)

分类:

2008-03-28 08:47:58

(注:这里说的=指的是判断等值的运算符,而不是赋值语句)

我们都知道Nothing代表空引用,代表C#中的null,在C#中我们判断是否空引用经常使用a == null这样写法,那么VB中呢,是否也可以写成 a = Nothing呢?答案是不行!判断是否空引用必须使用Is Nothing而不是= Nothing。VB与C#不一样,=符号只用于判断值的等价,不管是否值类型都是这样。在Option Strict打开的时候,未重载等值判断运算符的引用类型对象间都不允许使用=号。而Is运算符则总是用于引用比较,不能用于值类型。即时Option Strict关闭的时候,=运算符也会默认执行值的判断而不是引用的判断。那么是否空引用的问题显然是应该用Is Nothing,但为什么还可以写= Nothing呢,他代表什么?

原来VB的Nothing不仅仅表示空引用,而可以表示值类型类型的初始值。下面的代码在C#中是无法成立的。

Dim i As Integer = Nothing

i并不是被设置为空引用,而是0,Integer的初始值。所以,如果将=用于Nothing,将进行与该类型初始值的比较,只有Is Nothing才能进行空引用的测试。而如果要测试是否等于初始值,我们直接用那种值类型的初始值的字面量更好,无须使用Nothing。比如If a = 0显然比If a = Nothing来的清楚。所以无论在任何语境下,都不要将=运算符用于 Nothing,特别是String类型的对象。初学者更要牢记这一点。

阅读(740) | 评论(0) | 转发(0) |
0

上一篇:IsNothing 函数

下一篇:Sql的decimal数据类型

给主人留下些什么吧!~~