ByVal(Visual Basic)
호출된 프로시저나 속성은 호출 코드에서 내부 인수로 사용하는 변수의 값을 변경할 수 없도록 하는 방식으로 인수가 전달되도록 지정합니다.
설명
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 Class1 = New Class1()
c1.Field = 5
Console.WriteLine("Original value for the field: " & c1.Field)
' ByVal does not prevent changing the value of a field or property.
ChangeFieldValue(c1)
Console.WriteLine("Value of field after ChangeFieldValue: " & c1.Field)
' ByVal does prevent changing the value of c1 itself.
ChangeClassReference(c1)
Console.WriteLine("Value of field after ChangeClassReference: " & c1.Field)
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