TCPClient является классом и, следовательно, ссылочным типом.Параметры и переменные этого типа содержат ссылку на объект.В этом случае ByVal
означает, что эта ссылка передается по значению, а не по объекту.
Объект TCPClient
не будет скопирован!
Обратите внимание, что вы также можете передатьссылка ByRef
.В этом случае вы имеете дело со ссылкой на ссылку на объект.Это означает, что если вы назначите новый объект такому параметру в методе, это изменит переменную, используемую в качестве аргумента метода.Если бы параметр был ByVal
, он не изменил бы эту переменную, поскольку параметр метода содержал бы копию ссылки (но не копию объекта).
В обоих случаях, если вы изменяете свойствообъекта в методе, он изменит исходный объект, так как это идентичный объект.
Call Method(ByVal variable)
+---------+
| |
variable +----------> | Object |
| |
+---+-----+
^
Sub Method (ByVal p) |
p +------------------+ 'If you change p here, it does NOT change variable.
End Sub
Call Method(ByRef variable)
+---------+
| |
+-----> variable +----------> | Object |
| | |
| +---------+
|
| Sub Method (ByRef p)
+---------+ p 'If you change p here, it DOES change variable.
End Sub