Know Your Keywords ByRef and ByVal

Because any of the variables passed to a function procedure (or a subroutine) can be changed by the receiving procedure, it is important to know how to protect the original value of a variable. Visual Basic has two keywords that give or deny the permission to change the contents of a variable: ByRef and ByVal.

By default, Visual Basic passes information to a function procedure (or a subroutine) by reference (ByRef keyword), referring to the original data specified in the function's argument at the time the function is called. So, if the function alters the value of the argument, the original value is changed. You will get this result if you omit the ByVal keyword in front of the num1 argument in the MyAverage function's declaration line. If you want the function procedure to change the original value, you don't need to explicitly insert the ByRef keyword, because passed variables default to ByRef.

When you use the ByVal keyword in front of an argument name, Visual Basic passes the argument by value. It means that Visual Basic makes a copy of the original data. This copy is then passed to a function. If the function changes the value of an argument passed by value, the original data does not change — only the copy changes. That's why when the MyAverage function changed the value of the num1 argument, the original value of the num1 variable remained the same.

0 0

Post a comment