如何比较“”与double(将VB 6.0转换为VB.NET的问题)

前端之家收集整理的这篇文章主要介绍了如何比较“”与double(将VB 6.0转换为VB.NET的问题)前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
在VB 6.0中,有人制作了程序.
在那个节目中,他使用了

If tmpVar <> "" Then

是啊它在6.0中运作良好.
如果tmpVar有字符串,它可以工作.
如果tmpVar有两倍,它也可以.

我认为在vb 6.0中,“”意味着像null一样.
所以无论tmpVar有anyValue,它都有效.但是当我把这个程序转换成.Net时.
它不再起作用了

因为在.Net中,“”无法与双重比较.我认为In .Net“”只是字符串不像vb 6.0那样的null

所以我使用了Nothing而不是“”.但它也有问题.

例如,当我使用它时

If tmpVar <> Nothing Then

看起来没问题.
但是,如果tmpVar的编号为0,则它​​不起作用,因为他们认为Nothing和0相同.
我不希望这样.因为0并没有什么不同.但他们认为他们是一样的.

所以我又改变了我的程序

If tmpVar IsNot Nothing Then

是啊.看起来好像没问题了.但是如果tmpVar有“”,它就不起作用.

总而言之,在vb 6.0中,这个“”意味着像null一样空.它可以与任何类型进行比较.

但转换后,在vb.net中,这个“”并不意味着像null一样空.它只是字符串.它无法与doubletype相比.即使我将“”更改为Nothing,它与vb 6.0“”也不相同.我给你上面的例子.所以,如果有人知道这个解决方案,请告诉我.这让我很疯狂.

解决方法

不,“”只是一个字符串,而不是“null”,但有 implicit conversion happening in the background可能会让你相信它是“空”.

我认为tmpVar在VB6中是Variant,在VB.NET中是Object.
然后编写VB6程序的人做得不好,因为将“”存储在一个有意义的数字变量中并不是正确的方法,为此目的有特殊值Empty和Null.

在.NET中执行此操作的惯用方法是使用可空类型:

Dim tmpVar as Double?
if tmpVar Is Nothing Then
   ...
End If

猜你在找的VB相关文章