共用方式為


ByVal (Visual Basic)

指定以 傳值方式傳遞自變數,讓呼叫的程式或屬性無法變更呼叫程式代碼中自變數基礎的變數值。 如果未指定修飾詞,ByVal 是預設值。

備註

因為它是預設值,所以您不需要在方法簽章中明確指定 ByVal 關鍵詞。 它通常會產生嘈雜的程序代碼,而且通常會導致忽略非默認 ByRef 關鍵詞。

備註

ByVal修飾詞可用於下列內容:

Declare 陳述

Function 陳述式

Operator 聲明

財產聲明

子語句

範例

下列範例示範搭配參考型別自變數使用 ByVal 參數傳遞機制。 在此範例中,自變數是 c1類別的 Class1實例。 ByVal 會防止程式中的程式代碼變更 reference 自變數的基礎值, c1但不會保護 的 c1可存取字段和屬性。

Module Module1

    Sub Main()

        ' Declare an instance of the class and assign a value to its field.
        Dim c1 As 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

另請參閱