代碼一:
Dim x(100),y(100) As Byte
Call ReadBytes(x)
Public Sub ReadBytes(ByRef z() As Byte)
'Do Nothing
End Sub
對以上代碼進行編譯,你會發現編譯並不能通過。
代碼二:
Dim x(100) As Byte,y(100) As Byte
Call ReadBytes(x)
Public Sub ReadBytes(ByRef z() As Byte)
'Do Nothing
End Sub
調試以上代碼,通過。
從C語言或其他語言轉過來的程序員,很容易犯代碼一的錯誤,因為在VB中:
Dim x(100),y(100) As Byte
等效於:
Dim x(100)
Dim y(100) As Byte
而不是:
Dim x(100) As Byte
Dim y(100) As Byte
而如果不作類型說明,那麼VB就會給你使用默認的類型Variant。
這個錯誤非常隱蔽,而且並不常見在編程新手身上,而是有過很長時間其他語言編程經驗的老程序員身上,希望這篇文章能夠使你避免犯這樣的錯誤。