다음을 통해 공유


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(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)