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類型變
量如果在你的程式中沒有這麼做的話,在升級後你還需要做大量的手工改動


相關文章

E-Commerce Solutions

Leverage the same tools powering the Alibaba Ecosystem

Learn more >

Apsara Conference 2019

The Rise of Data Intelligence, September 25th - 27th, Hangzhou, China

Learn more >

Alibaba Cloud Free Trial

Learn and experience the power of Alibaba Cloud with a free trial worth $300-1200 USD

Learn more >

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。