ByVal(Visual Basic)

호출된 프로시저나 속성은 호출 코드에서 내부 인수로 사용하는 변수의 값을 변경할 수 없도록 하는 방식으로 인수가 전달되도록 지정합니다.

설명

ByVal 한정자는 다음 컨텍스트에서 사용할 수 있습니다.

Declare 문

Function 문(Visual Basic)

Operator 문

Property 문

Sub 문(Visual Basic)

예제

다음 예제에서는 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

참고 항목

개념

값 및 참조로 인수 전달(Visual Basic)

기타 리소스

키워드(Visual Basic)