Visual Basic .NET Language
ByVal 및 ByRef 키워드
수색…
ByVal 키워드
메서드 매개 변수 앞에 ByVal 키워드 (또는 기본적으로 ByVal로 간주되는 키워드 없음)는 메서드가 매개 변수의 기본 변수를 변경 (새 값 지정) 하지 못하도록 매개 변수를 보냅니다.
클래스의 경우 인수의 내용 (또는 상태)이 변경되지 않도록하지 않습니다.
Class SomeClass
Public Property Member As Integer
End Class
Module Program
Sub Main()
Dim someInstance As New SomeClass With {.Member = 42}
Foo (someInstance)
' here someInstance is not Nothing (still the same object)
' but someInstance.Member is -42 (internal state can still be changed)
Dim number As Integer = 42
Foo(number)
' here number is still 42
End Sub
Sub Foo(ByVal arg As SomeClass)
arg.Member = -arg.Member ' change argument content
arg = Nothing ' change (re-assign) argument
End Sub
Sub Foo(arg As Integer) ' No ByVal or ByRef keyword, ByVal is assumed
arg = -arg
End Sub
End Module
ByRef 키워드
메서드 매개 변수 앞에 ByRef 키워드를 사용하면 메서드가 매개 변수의 기본 변수를 변경 (새 값 지정) 할 수 있도록 매개 변수가 전송됩니다.
Class SomeClass
Public Property Member As Integer
End Class
Module Program
Sub Main()
Dim someInstance As New SomeClass With {.Member = 42}
Foo (someInstance)
' here someInstance is not Nothing
' but someInstance.Member is -42
Bar(someInstance)
' here someInstance is Nothing
End Sub
Sub Foo(ByVal arg As SomeClass)
arg.Member = -arg.Member ' change argument content
arg = Nothing ' change (re-assign) argument
End Sub
Sub Bar(ByRef param As Integer)
arg.Member = -arg.Member ' change argument content
arg = Nothing ' change (re-assign) argument
End Sub
End Module
Modified text is an extract of the original Stack Overflow Documentation
아래 라이선스 CC BY-SA 3.0
와 제휴하지 않음 Stack Overflow