호출된 프로시저 또는 속성이 호출 코드의 인수를 기초로 하는 변수의 값을 변경할 수 없도록 인수가 값으로 전달되도록 지정합니다. 한정자가 지정되지 않은 경우 ByVal이 기본값입니다.
비고
기본값이므로 메서드 서명에서 키워드를 ByVal 명시적으로 지정할 필요가 없습니다. 노이즈 코드를 생성하는 경향이 있으며 종종 기본 ByRef 이 아닌 키워드가 간과됩니다.
비고
한 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에서 찾을 수 있으며, 여기서 문제와 끌어오기 요청을 만들고 검토할 수도 있습니다. 자세한 내용은 참여자 가이드를 참조하세요.
.NET