我調試的一個項目,現在和它具有以下簽名的函數:可選BYVAL布爾參數不採取它的默認值
Public Function changeRemoteDirectory(ByVal newDirectory As String, Optional ByVal Direction As Boolean = True) As Boolean
MsgBox(direction)
'rest of code
End Function
我試圖找出是什麼導致這個函數返回當我知道它應該返回True
的False
值因爲我提供輸入,所以我把MsgBox(direction)
到Function
看什麼的direction
的價值是,當我打電話給Function
。我叫這樣的功能,但我收到了MsgBox
這顯示了direction
值是False
:
changeRemoteDirectory("/internal")
第一個參數工作得很好,並需要它正確地執行工作的代碼,但我想不通在爲什麼Direction
的值爲False
的情況下,我相信它的默認值應該是True
。如果需要,我並不完全反對重寫Function
,但是在這裏任何人都可以辨別爲什麼Direction
沒有True
的值,當調用函數changeRemoteDirectory()
時沒有提供第二個參數?
改爲使用重載。您可以獲得與調試和性能問題相同的功能。 – jbabey
@jbabey - 謝謝。如果我最終不得不重寫這個函數,那正是我想要做的。無論如何,我仍然好奇爲什麼會發生這種情況,因爲我從未遇到過這個問題。 –
聽起來好像您正在經歷可選參數導致的許多痛苦之一。當調用'changeRemoteDirectory'的代碼被編譯時,可選參數被注入到調用中,就像'const'在編譯時被替換一樣。沒有重新編譯**調用者**,對可選參數值的更改不會更新。請參閱[本文](http://jelle.druyts.net/2003/05/17/OptionalParametersVBNET.aspx)瞭解更多信息。 – jbabey