vb.Net编程简介之二(轉)
2024-07-10 13:02:41
供稿:网友
对boolean类型数据使用and/or/not操作
and和or关键字在visual basic.net和visual basic 6.0中的使
用是不同的,在visual basic 6.0中,and运算既执行逻辑and操作也执行逐位and操作,取决于操作数(如果是boolean类型,执行逻辑and操作,如果是数字,执行逐位and操作)。在visual basic.net中,and运算只执行逻辑and操作。对于逐位操作,在visual basic.net提供了一组操作:bitand, bitor, bitnot以及bitxor 。
下面是演示这些差异的范例程序
dim a as integer
dim b as integer
dim c as boolean
a = 1
b = 2
c = a and b
msgbox ("the answer is " & c)
当上面的代码在visual basic 6.0下运行时,结果是false(执行
逐位and操作);然而在visual basic.net下,结果是true(执行逻辑and操作)。
要确定你的程序在升级后也运行结果同升级前一样,visual
basic.net包含了兼容函数vb6.and, vb6.or以及vb6.not,这些函数执行的结果同visual basic 6.0下的and/or/not操作的执行结果是一样的。当代码升级后,结果会象下面这样:
dim a as short
dim b as short
dim c as boolean
a = 1
b = 2
c = vb6.and(a, b)
msgbox ("the answer is " & c)
升级后的代码会得出false的结果,同visual basic 6.0下运行一样
如果不想你的代码升级后使用兼容函数,就需要确保你的and/or/not都使用在boolean类型数据的操作中,例如,如果上面的代码更改为下面的方式:
dim a as integer
dim b as integer
dim c as boolean
a = 1
b = 2
c = a <> 0 and b <> 0
msgbox ("the answer is " & c)
当升级后,代码同原来的几乎一样:
dim a as short
dim b as short
dim c as boolean
a = 1
b = 2
c = a <> 0 and b <> 0
msgbox ("the answer is " & c)
同前面不同的是每一个操作都是在boolean数据之间进行的,因
此它们在visual basic 6.0中使用的都是逻辑and操作。所以在升级到visual basic.net后不会发生改变。这样做的意义是你可以直接在visual basic.net和visual basic 6.0之间拷贝和粘贴代码,你的代码会运行的更快因为使用的是本地的and操作而不是兼容函数。
另外一个需要考虑的问题是对于函数结果的and/or/not 操作的
问题,例如下面的范例:
dim b as boolean
b = function1() and function2()
在visual basic 6.0中,function1和function2的结果都会执行
后再将结果进行and操作。在visual basic.net中,只有当function1的结果为true时才会计算function2。因为visual basic.net中的and运算执行的是逻辑and操作,如果function1结果为false,and结果肯定是false,为了加快速度就不再执行function2的了。但是如果
function2另有目的,例如用于避免某些错误,那么就会出现不可预
知的错误,那么上面的代码升级后就会象下面的样子:
dim b as boolean
b = vb6.and(function1(), function2())
为了不在升级代码中出现兼容函数,原来的代码需要做如下的改动:
dim b as boolean
dim c as boolean
dim d as boolean
c = function1()
d = function2()
b = c and d
另一个需要注意的是在visual basic.net中,true值将不再是-1
而是1。做这个改变是为了使visual basic.net能集成在 .net语言中。因为有这个改变,你需要再你的visual basic 6.0工程中使用常量true而不是-1来表示真值,使用boolean类型而不是整数类型变量保存boolean数据。下面的代码说明了visual basic 6.0和visual basic.net
之间的不同:
dim i as integer
i = true
if i = -1 then
msgbox ("true")
else
msgbox ("false")
end if
在visual basic 6.0中,结果为true,而在visual basic.net中结果
为false。
如果对代码做如下改动,程序在两种语言下运行都会显示true
dim i as boolean
i = true
if i = true then
msgbox ("true")
else
msgbox ("false")
end if
通过上面的范例可以看出在程序中需要注意两点:
1、使用常量true和false来判断是否而不要使用0和-1
2、使用boolean类型变量储存boolean数值而不要使用integer类型变
量如果在你的程序中没有这么做的话,在升级后你还需要做大量的手工改动