Let’s say I have the following function:
Function myFunction(j As Integer) As Double
myFunction = 3.87 * j
Exit Function
End Function
Is j passed as value ByVal or by reference ByRef?
Or does it depends of the data type? What if I have a complex object passed as the value?
Thanks in advance!
Parameters are passed
ByValunless explicitly specified. For details, see Passing Arguments by Value and by Reference, which states:As for:
This is fine, provided the “complex object” is a class (Reference type), you’re not going to be doing a lot of copying. This is because the reference to the object instance is passed by value (ByVal), which means you’re only copying a single reference, even if the class is very large.
If, however, the complex object is a structure (value type), you will be causing the object to be copied when the method is called. This, btw, is why some frameworks like XNA provide alternative versions of many methods (like Matrix.Multiply) that have an option to pass
ByRef– this avoids the expensive copies of the Matrix structures.