我寫了一個返回用戶定義類型的函數。返回空的UDT從函數
如何在函數發生任何錯誤的情況下返回一個空的UDT?
我試着設置函數爲'Nothing',但它拋出'Object Required'錯誤。
在此先感謝。
我寫了一個返回用戶定義類型的函數。返回空的UDT從函數
如何在函數發生任何錯誤的情況下返回一個空的UDT?
我試着設置函數爲'Nothing',但它拋出'Object Required'錯誤。
在此先感謝。
在VB6中,用戶定義的類型是「值類型」,而類是「引用類型」。值類型通常存儲在堆棧中(除非它們是類的成員)。引用類型作爲指針存儲在堆棧中,指向存儲實際實例數據的堆中的某個位置。
這意味着對類的引用可以是Nothing
(指針爲零),而值類型不能。
有多種方式來解決問題:
Boolean
成員添加到您的用戶定義的類型,以指示成功或失敗。Nothing
(如tcarvin said)。Boolean
並採取ByRef
參數。如果函數結果爲True
,則結果寫入傳入的參數。 (很多人不喜歡這樣,但它是一個通用的解決方案,你應該知道的。)包裝:
Public Type Wrapper
Success As Boolean
Inner As YourOriginalUDT
End Type
功能與的ByRef:
Function Foo(ByRef Result As YourOriginalUDT) As Boolean
...
If Success Then
Foo = True
Result.A = A
Result.B = B
Result.C = C
... etc. ...
End If
End Function
UDT不能爲空。 您既可以使用「虛擬」非空間化的UDT,也可以將其所有成員都設置爲默認值。
如果可能,請改爲使用Class/Object。即使這樣做是把這一類簡單的東西:
Public FName As String
Public LName As String
Public HiredDate As Date
然後您可以返回:
Public Type EmpRecord
FName As String
LName As String
HiredDate As Date
End Type
成一個類可以通過添加類到您的項目稱爲EmpRecord和包括剛纔這不能做到檢索記錄時發生錯誤的函數沒有任何內容。