ByVal (Visual Basic)

指定一種傳遞引數的方式,如果使用這種方式,呼叫的程序或屬性 (Property) 便無法變更呼叫程式碼中引數所含的變數值。

備註

ByVal 修飾詞可用於以下內容中:

Declare 陳述式

Function 陳述式 (Visual Basic)

Operator 陳述式

Property 陳述式

Sub 陳述式 (Visual Basic)

範例

下列範例示範如何使用 ByVal 參數傳遞機制以及參考型別引數。 在範例中,引數 c1 是 Class1 類別的執行個體。 ByVal 可避免程序中的程式碼變更參考引數 c1 的基礎值,但無法保護 c1 的可存取欄位和屬性。

Module Module1

    Sub Main()

        ' Declare an instance of the class and assign a value to its field.
        Dim c1 As Class1 = New Class1()
        c1.Field = 5
        Console.WriteLine(c1.Field)
        ' Output: 5

        ' ByVal does not prevent changing the value of a field or property.
        ChangeFieldValue(c1)
        Console.WriteLine(c1.Field)
        ' Output: 500

        ' ByVal does prevent changing the value of c1 itself. 
        ChangeClassReference(c1)
        Console.WriteLine(c1.Field)
        ' Output: 500

        Console.ReadKey()
    End Sub

    Public Sub ChangeFieldValue(ByVal cls As Class1)
        cls.Field = 500
    End Sub

    Public Sub ChangeClassReference(ByVal cls As Class1)
        cls = New Class1()
        cls.Field = 1000
    End Sub

    Public Class Class1
        Public Field As Integer
    End Class

End Module

請參閱

概念

以傳值和傳址方式傳遞引數 (Visual Basic)

其他資源

關鍵字 (Visual Basic)