다음을 통해 공유


ByVal(Visual Basic)

호출된 프로시저 또는 속성이 호출 코드의 인수를 기초로 하는 변수의 값을 변경할 수 없도록 인수가 으로 전달되도록 지정합니다. 한정자가 지정되지 않은 경우 ByVal이 기본값입니다.

비고

기본값이므로 메서드 서명에서 키워드를 ByVal 명시적으로 지정할 필요가 없습니다. 노이즈 코드를 생성하는 경향이 있으며 종종 기본 ByRef 이 아닌 키워드가 간과됩니다.

비고

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

선언문

Function 문

연산자 명령문

Property 문

Sub 문

예시

다음 예제에서는 참조 형식 인수와 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

참고하십시오