vb.Net編程簡介之二(轉(zhuǎn))
2024-07-10 13:02:41
供稿:網(wǎng)友
對boolean類型數(shù)據(jù)使用and/or/not操作
and和or關鍵字在visual basic.net和visual basic 6.0中的使
用是不同的,在visual basic 6.0中,and運算既執(zhí)行邏輯and操作也執(zhí)行逐位and操作,取決于操作數(shù)(如果是boolean類型,執(zhí)行邏輯and操作,如果是數(shù)字,執(zhí)行逐位and操作)。在visual basic.net中,and運算只執(zhí)行邏輯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下運行時,結(jié)果是false(執(zhí)行
逐位and操作);然而在visual basic.net下,結(jié)果是true(執(zhí)行邏輯and操作)。
要確定你的程序在升級后也運行結(jié)果同升級前一樣,visual
basic.net包含了兼容函數(shù)vb6.and, vb6.or以及vb6.not,這些函數(shù)執(zhí)行的結(jié)果同visual basic 6.0下的and/or/not操作的執(zhí)行結(jié)果是一樣的。當代碼升級后,結(jié)果會象下面這樣:
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的結(jié)果,同visual basic 6.0下運行一樣
如果不想你的代碼升級后使用兼容函數(shù),就需要確保你的and/or/not都使用在boolean類型數(shù)據(jù)的操作中,例如,如果上面的代碼更改為下面的方式:
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數(shù)據(jù)之間進行的,因
此它們在visual basic 6.0中使用的都是邏輯and操作。所以在升級到visual basic.net后不會發(fā)生改變。這樣做的意義是你可以直接在visual basic.net和visual basic 6.0之間拷貝和粘貼代碼,你的代碼會運行的更快因為使用的是本地的and操作而不是兼容函數(shù)。
另外一個需要考慮的問題是對于函數(shù)結(jié)果的and/or/not 操作的
問題,例如下面的范例:
dim b as boolean
b = function1() and function2()
在visual basic 6.0中,function1和function2的結(jié)果都會執(zhí)行
后再將結(jié)果進行and操作。在visual basic.net中,只有當function1的結(jié)果為true時才會計算function2。因為visual basic.net中的and運算執(zhí)行的是邏輯and操作,如果function1結(jié)果為false,and結(jié)果肯定是false,為了加快速度就不再執(zhí)行function2的了。但是如果
function2另有目的,例如用于避免某些錯誤,那么就會出現(xiàn)不可預
知的錯誤,那么上面的代碼升級后就會象下面的樣子:
dim b as boolean
b = vb6.and(function1(), function2())
為了不在升級代碼中出現(xiàn)兼容函數(shù),原來的代碼需要做如下的改動:
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類型而不是整數(shù)類型變量保存boolean數(shù)據(jù)。下面的代碼說明了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中,結(jié)果為true,而在visual basic.net中結(jié)果
為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數(shù)值而不要使用integer類型變
量如果在你的程序中沒有這么做的話,在升級后你還需要做大量的手工改動