通過值傳遞參數和通過引用傳遞參數之間的差異 (Visual Basic)

通過值傳遞參數和通過引用傳遞參數之間的差異 (Visual Basic)


將一個或多個參數 (Argument) 傳遞給過程時,每個參數分別對應於調用代碼中的一個基礎編程元素。 您可以傳遞此基礎元素的值,也可以對其進行引用。 這被稱爲“傳入機制”。

通過在過程定義中爲相應的參數 (parameter) 指定 ByVal (Visual Basic) 關鍵字,可以通過值傳遞參數 (argument)。 使用此傳入機制時,Visual Basic 將此基礎編程元素的值複製到過程中的一個局部變量中。 過程代碼不具有任何訪問調用代碼中的基礎元素的權限。

通過在過程定義中爲相應的參數 (parameter) 指定 ByRef (Visual Basic) 關鍵字,可以通過引用傳遞參數 (argument)。 使用此傳入機制時,Visual Basic 使過程直接引用調用代碼中的基礎編程元素。

選擇傳入機制不同於將基礎元素類型分類。 通過值傳遞或通過引用傳遞是指 Visual Basic 向過程代碼提供什麼操作。 而值類型或引用類型是指編程元素將以何種方式存儲在內存中。

但是,傳入機制和元素類型又相互關聯。 引用類型的值是一個指針,它指向內存中其他位置的數據。 這意味着在通過值傳遞引用類型時,過程代碼具有一個指向基礎元素的數據的指針(即使它不能訪問基礎元素本身)。 例如,如果此元素爲數組變量,過程代碼將不具有訪問該變量的權限,但它可以訪問數組成員。

將不可修改元素作爲參數傳遞時,過程永遠不能在調用代碼中修改它,不論它的傳入機制是 ByVal 還是 ByRef

對於可修改元素,下表概括了元素類型與傳入機制之間的相互作用。

元素類型

傳入機制爲 ByVal

傳入機制爲 ByRef

值類型(僅包含值)

過程不能更改變量或它的任何成員。

過程能夠更改變量及其成員。

引用類型(包含指向類或結構實例的指針)

過程不能更改變量,但可以更改它指向的實例的成員。

過程能夠更改變量和它指向的實例的成員。

將一個或多個參數 (Argument) 傳遞給過程時,每個參數分別對應於調用代碼中的一個基礎編程元素。 您可以傳遞此基礎元素的值,也可以對其進行引用。 這被稱爲“傳入機制”。

通過在過程定義中爲相應的參數 (parameter) 指定 ByVal (Visual Basic) 關鍵字,可以通過值傳遞參數 (argument)。 使用此傳入機制時,Visual Basic 將此基礎編程元素的值複製到過程中的一個局部變量中。 過程代碼不具有任何訪問調用代碼中的基礎元素的權限。

通過在過程定義中爲相應的參數 (parameter) 指定 ByRef (Visual Basic) 關鍵字,可以通過引用傳遞參數 (argument)。 使用此傳入機制時,Visual Basic 使過程直接引用調用代碼中的基礎編程元素。

選擇傳入機制不同於將基礎元素類型分類。 通過值傳遞或通過引用傳遞是指 Visual Basic 向過程代碼提供什麼操作。 而值類型或引用類型是指編程元素將以何種方式存儲在內存中。

但是,傳入機制和元素類型又相互關聯。 引用類型的值是一個指針,它指向內存中其他位置的數據。 這意味着在通過值傳遞引用類型時,過程代碼具有一個指向基礎元素的數據的指針(即使它不能訪問基礎元素本身)。 例如,如果此元素爲數組變量,過程代碼將不具有訪問該變量的權限,但它可以訪問數組成員。

將不可修改元素作爲參數傳遞時,過程永遠不能在調用代碼中修改它,不論它的傳入機制是 ByVal 還是 ByRef

對於可修改元素,下表概括了元素類型與傳入機制之間的相互作用。

元素類型

傳入機制爲 ByVal

傳入機制爲 ByRef

值類型(僅包含值)

過程不能更改變量或它的任何成員。

過程能夠更改變量及其成員。

引用類型(包含指向類或結構實例的指針)

過程不能更改變量,但可以更改它指向的實例的成員。

過程能夠更改變量和它指向的實例的成員。


https://msdn.microsoft.com/zh-cn/library/eek064h4(v=vs.100).aspx

將一個或多個參數 (Argument) 傳遞給過程時,每個參數分別對應於調用代碼中的一個基礎編程元素。 您可以傳遞此基礎元素的值,也可以對其進行引用。 這被稱爲“傳入機制”。

通過在過程定義中爲相應的參數 (parameter) 指定 ByVal (Visual Basic) 關鍵字,可以通過值傳遞參數 (argument)。 使用此傳入機制時,Visual Basic 將此基礎編程元素的值複製到過程中的一個局部變量中。 過程代碼不具有任何訪問調用代碼中的基礎元素的權限。

通過在過程定義中爲相應的參數 (parameter) 指定 ByRef (Visual Basic) 關鍵字,可以通過引用傳遞參數 (argument)。 使用此傳入機制時,Visual Basic 使過程直接引用調用代碼中的基礎編程元素。

選擇傳入機制不同於將基礎元素類型分類。 通過值傳遞或通過引用傳遞是指 Visual Basic 向過程代碼提供什麼操作。 而值類型或引用類型是指編程元素將以何種方式存儲在內存中。

但是,傳入機制和元素類型又相互關聯。 引用類型的值是一個指針,它指向內存中其他位置的數據。 這意味着在通過值傳遞引用類型時,過程代碼具有一個指向基礎元素的數據的指針(即使它不能訪問基礎元素本身)。 例如,如果此元素爲數組變量,過程代碼將不具有訪問該變量的權限,但它可以訪問數組成員。

將不可修改元素作爲參數傳遞時,過程永遠不能在調用代碼中修改它,不論它的傳入機制是 ByVal 還是 ByRef

對於可修改元素,下表概括了元素類型與傳入機制之間的相互作用。

元素類型

傳入機制爲 ByVal

傳入機制爲 ByRef

值類型(僅包含值)

過程不能更改變量或它的任何成員。

過程能夠更改變量及其成員。

引用類型(包含指向類或結構實例的指針)

過程不能更改變量,但可以更改它指向的實例的成員。

過程能夠更改變量和它指向的實例的成員。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章