vb.Net編程簡介之三(轉)

來源:互聯網
上載者:User
編程 避免Null傳播(Propagation)
    先前版本的VB支援Null傳播。Null傳播的前提是null值使用在表
達式中,運算式的結果將是Null,例如下面的範例,結果V都將是Null

Dim V
V = 1 + Null
V = Null + Right$("SomeText", 1)
V = Right("SomeText", 0)

    Null傳播在Visual Basic.NET中將不再被支援。象上面的語句
1+Null會產生一個類型錯誤。另外在Visual Basic 6.0中有兩個求左值的函數:Left和Left$前者傳回值為Variant類型並且可以為空白,Left$函數傳回值為String類型。在Visual Basic.NET中,只有一個Left函數,該函數總是返回String類型值

    為了使程式相容Visual Basic 6.0以及Visual Basic.NET,你需
要在代碼中加入對Null檢測的代碼,在Visual Basic.NET中,下面的函數將不再返回Null值:

Chr Mid
Command Oct
CurDir Right
Date RTrim
Environ Space
Error Str
Hex Time
LCase Trim
LTrim UCase

由於資料庫中的資料可以包含Null值,所以你需要在程式中對獲得的
資料加入代碼檢測其值是否為Null。

使用以0為下界的數組
    Visual Basic 6.0允許你使用任何整數數字作為一個數組的上界
和下界。同樣你也可以通過ReDim將一個Variant重新定義為數組。為了能夠同.NET平台下的其它語言協同工作,Visual Basic.NET數組必須以0作為下界,而且只有一個變數事先定義為數組後才可以使用ReDim函數重新定義。雖然這樣限制了數組定義的靈活性,但是這樣可以在Visual Basic.NET和.NET下的其它語言之間傳遞數組。下面的範例說明了新的定義數組的約束:

Dim a(1 To 10) As Integer   '錯誤:下界必須為0
Dim v
ReDim v(10)   '錯誤,在沒有定義v為數組前不能使用ReDim
Dim b(10) As Integer   '正確
ReDim b(5) As Integer   '正確

    另外,在Visual Basic 6.0中, Dim (0 to 10) As Integer定
義了包含11各整數的數組,索引從0到10。同樣
的定義在Visual Basic.NET下建立一個包含10個整數的數組,索引從
0到9。

    基於上面的改變,Option Base 0|1已經從Visual Basic.NET中
刪除了。

    當你的代碼升級到Visual Basic.NET後,以0為下界的數組不會
改變。如果數組下界非0的話,數組會升級到一個相容類,如下:

Dim a(1 To 10) As Integer
改變為:

Dim a As Object = New VB6.Array(GetType(Short), 1,10)

    相容數組類比本地數組操作起來要慢很多,同時在程式中使用它
也有限制。例如你不能將一個相容數組類作為參數傳遞到一個以數組作為參數的函數,你也不能傳遞一個相容類到Visual C#或者Visual C++類中。

    基於以上原因,你需要在你的Visual Basic 6.0代碼中使用以0
為下界的數組,避免使用ReDim定義數組,避免使用Option Base 1語句。

使用VB常量而不要使用它們所代表的值在寫代碼的時候,盡量使用VB常量而不要使用它們所代表的值。例如你要在運行時將一個視窗最大化,使用:

Me.WindowState = vbMaximized   'Good: Constant name

而不要使用:

Me.WindowStyle = 2   'Bad: Underlying value
Me.WindowStyle = X   'Bad: Variable

    在Visual Basic.NET中,一些屬性和常量的數值發生了改變;例
如True的值由-1變為了1。在你的代碼升級到Visual Basic.NET後,大部分的常量會自動更改;然而如果你使用的是常量代表的數值而不是常量名,那麼你就要做大量的手工更改工作。

使用者自訂資料類型中的數組和固定長度字串
    為了使Visual Basic.NET數組和資料結構完全相容Visual
Studio.NET,固定長度字串在新語言中不再被支援。在大多數情況下者不是問題,因為Visual Basic.NET提供了相容固定長度字串定義的類,那麼代碼:

Dim MyFixedLengthString As String * 100

升級後會變成這樣:

Dim MyFixedLengthString As New VB6.FixedLengthString(100)

    然而,在資料結構(例如使用者自訂資料)中使用固定長度字元
串類可能產生錯誤。因為在使用者自訂資料結構建立時類不會被建立。使用者自訂資料中的固定長度數組也會產生同樣的問題。

    當你的代碼升級後,在代碼中的使用者自訂資料類型中如果有固
定長度的數組和字串的話,在定義位置會添加註釋提醒你在使用使用者自訂資料類型前首先對字串或者數組進行初始化。然而,你可以在你的Visual Basic 6.0的使用者自訂類型中將固定長度的字串定義改變為字串定義,將固定長度數組定義改變為未初始化數組來
避免升級產生後產生上面的問題。例如:

Private Type MyType
    MyArray(5) As Integer
    MyFixedString As String * 100
End Type
Sub Bar()
    Dim MyVariable As MyType
End Sub

升級後會變為:

Private Type MyType
    MyArray() As Integer
    MyFixedString As String
End Type
Sub Bar()
    Dim MyVariable As MyType
    ReDim MyVariable.MyArray(5) As Integer
    MyVariable.MyFixedString = String$(100, " ")
End Sub   

Avoid Legacy Features
避免使用從原始Basic繼承的特性,如下的關鍵字在新版本語言中將
不再出現:

Def
Computed GoTo/GoSub
GoSub/Return
Option Base 0|1
VarPtr, ObjPtr, StrPtr
LSet


相關文章

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 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。