Share via


ByVal (Visual Basic)

呼び出されたプロシージャまたはプロパティは、呼び出しコードの引数の基になる変数の値を変更できないことを、引数を渡す方法として指定します。

解説

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)