A parameter declared with an explicit ByVal
modifier is a value parameter. If the ByVal
modifier is used, the ByRef
modifier may not be specified. A value parameter comes into existence upon invocation of the member to which the parameter belongs, and is initialized with the value of the argument given in the invocation. A value parameter ceases to exist upon return of the member.
A method is permitted to assign new values to a value parameter. Such assignments only affect the local storage location represented by the value parameter — they have no effect on the actual argument given in the method invocation.