Заметка
Доступ к этой странице требует авторизации. Вы можете попробовать войти в систему или изменить каталог.
Доступ к этой странице требует авторизации. Вы можете попробовать сменить директорию.
Указывает, что аргумент передается по значению, поэтому вызываемая процедура или свойство не может изменить значение переменной, лежащей в основе аргумента в вызывающем коде. Если модификатор не указан, ByVal используется по умолчанию.
Замечание
Так как это значение по умолчанию, не нужно явно указывать ByVal ключевое слово в сигнатурах метода. Он, как правило, создает шумный код и часто приводит к тому, что ключевое слово, отличное от по умолчанию ByRef , игнорируется.
Замечания
Модификатор ByVal можно использовать в следующих контекстах:
Пример
В следующем примере показано использование механизма передачи ByVal параметров с аргументом ссылочного типа. В примере аргумент — c1экземпляр класса Class1.
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