ByVal (Visual Basic)
呼び出されたプロシージャまたはプロパティは、呼び出しコードの引数の基になる変数の値を変更できないことを、引数を渡す方法として指定します。
解説
ByVal 修飾子は、次のコンテキストで使用できます。
Function ステートメント (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