Ескертпе
Бұл бетке кіру үшін қатынас шегін айқындау қажет. Жүйеге кіруді немесе каталогтарды өзгертуді байқап көруге болады.
Бұл бетке кіру үшін қатынас шегін айқындау қажет. Каталогтарды өзгертуді байқап көруге болады.
Указывает, что аргумент передается по значению, поэтому вызываемая процедура или свойство не может изменить значение переменной, лежащей в основе аргумента в вызывающем коде. Если модификатор не указан, 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