共用方式為


依值傳遞和參考傳遞參數之間的差異 (Visual Basic)

當您將一或多個參數傳遞至程序時,每個參數都會對應至呼叫代碼中的基礎程式設計元素。 您可以傳遞這個基礎元素的值,或傳遞其參照。 這稱為 傳遞機制

依值傳遞

要以傳值方式傳遞引數,您需要在程式定義中為對應參數指定 ByVal 關鍵詞。 當您使用此傳遞機制時,Visual Basic 會將基礎程式元素的值複製到過程中的局部變數。 程序碼在呼叫碼中沒有存取基礎元素的權限。

以參考方式傳遞

在程式定義中指定對應參數的 ByRef 關鍵詞,您便能以參考傳遞引數。 當您使用此傳遞機制時,Visual Basic 會為程式提供呼叫程式代碼中基礎程式設計專案的直接參考。

傳遞機制和項目類型

傳遞機制的選擇與基礎元素類型的分類不同。 以傳值或傳址方式傳遞是指 Visual Basic 提供給程式代碼的內容。 實值型別或參考型別是指程式設計專案儲存在記憶體中的方式。

不過,傳遞機制和項目類型是相互關聯的。 參考型別的值是記憶體中其他地方數據的指標。 這表示當您以傳值方式傳遞參考型別時,程式代碼具有指向基礎元素數據的指標,即使無法存取基礎元素本身。 例如,如果元素是陣列變數,程式代碼就不能存取變數本身,但可以存取數位成員。

修改能力

當您將不可修改的項目當做自變數傳遞時,程式永遠不能在呼叫程式代碼中修改它,無論是傳遞 ByVal 還是 ByRef

對於可修改的專案,下表摘要說明專案類型和傳遞機制之間的互動。

項目類型 通過 ByVal 通過 ByRef
實值型態 (只包含值) 程式無法變更變數或其任何成員。 此程式可以變更變數及其成員。
參考型別 (包含類別或結構實例的指標) 程式無法變更變數,但可以變更其所指向實例的成員。 程式可以變更其所指向之實例的變數和成員。

另請參閱