vb.Net編程簡介之二(轉)
來源:互聯網
上載者:User
編程 對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類型變
量如果在你的程式中沒有這麼做的話,在升級後你還需要做大量的手工改動