ByVal (Visual Basic)
呼び出されたプロシージャまたはプロパティによって、呼び出し元のコードの引数の基になる変数の値を変更できないように、引数を値渡しで渡すことを指定します。 修飾子が指定されない場合、ByVal が既定になります。
注意
それは既定であるため、メソッド シグネチャに ByVal
キーワードを明示的に指定する必要はありません。 それにより、ノイズが多いコードが生成される傾向があるため、既定でない ByRef
キーワードが見落とされることが多くなります。
Remarks
ByVal
修飾子は、次のコンテキストで使用できます。
例
次の例では、参照型の引数を指定して ByVal
パラメーターの引き渡し方法の使用を示します。 この例では、引数は、クラス Class1
のインスタンスである c1
です。 ByVal
によって、プロシージャ内のコードが参照引数 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
関連項目
GitHub で Microsoft と共同作業する
このコンテンツのソースは GitHub にあります。そこで、issue や pull request を作成および確認することもできます。 詳細については、共同作成者ガイドを参照してください。
.NET