亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

VB6按值傳遞并按引用傳遞

VB6按值傳遞并按引用傳遞

我正在努力理解VB6中的按值傳遞和按引用傳遞。我在.NET和Java等面向對象的編程語言中完全理解了這些概念(我意識到Java并沒有通過引用傳遞)??聪旅娴拇a:Private Sub Form_Load()Dim Test As IntegerTest = 1TestFunction Test 'line 5MsgBox (Test)End SubPrivate Sub TestFunction(ByVal i As Integer)    i = i + 1End Sub當我在第5行的Test上放置方括號時,消息框將按我期望的那樣打印1?,F在看看下面的代碼:Private Sub Form_Load()Dim Test As IntegerTest = 1TestFunction Test 'line 5MsgBox TestEnd SubPrivate Sub TestFunction(ByRef i As Integer)    i = i + 1End Sub消息框將按我期望的那樣打印2。但是,如果將括號添加到第5行,則消息框將打印1,這是我所不希望的??雌饋?,即使被調用函數中定義的變量是ByRef,調用函數也可以按值傳遞。似乎反之亦然,例如,如果被調用函數的簽名帶有定義為ByVal的變量,則它將始終為ByVal(即使調用函數中變量周圍沒有括號)。VB6中這背后的想法是什么?我意識到這是VB6中的一個基本問題,但這使我感到困惑。我已經閱讀了MSDN文檔,并且意識到這是真的,但是并沒有解釋其背后的原因。
查看完整描述

2 回答

?
慕工程0101907

TA貢獻1887條經驗 獲得超5個贊

將任何表達式括在圓括號中會使該表達式首先執行求值,然后再執行其他操作,即使該表達式只是單個變量也是如此。在您的情況下,該表達式的結果將作為參數傳遞。

因此,實際上您是通過引用傳遞參數。但是,您傳遞的參數是表達式的結果,而不是原始變量。這就是為什么原始變量無法更新的原因。


查看完整回答
反對 回復 2019-10-22
  • 2 回答
  • 0 關注
  • 871 瀏覽

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號