William,
It's impossible in vb6.In vb6, the object is always passed by reference.
Wrong!
Unfortunately the Ref word is overloaded here. :-|
An object in both VB6 & VB.NET is a Reference Type!
ByVal & ByRef Parameters are independent of Reference & Value Types. All
parameters in VB.NET by default are passed ByVal, you should only pass a
parameter ByRef when you have to, which is when you need to modify the
callers variable.
A Reference Type is an object that exists on the heap. If I have a variable
that is a reference type and assign the variable to another variable. Both
variables will be pointing to the same object on the heap.
Dim x As Person
x = New Person()
Dim y As Person
y = x
Both x & y are the exact same Person object on the heap.
A Value Type does not live on the Heap. If I have a value type variable and
I assign it to another variable, a copy of the value is made.
Dim x As Integer
x = 100
Dim y As Integer
y = x
Although both x & y have the value 100, they are physically different values
as a copy was made.
Now when you pass a variable to a ByVal parameter a copy of the variable is
made. So for a Reference Type a copy of the reference is made, which means
there is still only one object on the heap & two references to that object.
For a Value Type a copy of the value is made.
When you pass a variable to a ByRef parameter a reference to that variable
is made. So for a Reference Type you have a reference to a reference to the
object, for a Value Type you have a reference to the value.
Remember ByVal & ByRef are how parameters are passed. Reference & Value
Types are how quantities are stored.
Hope this helps
Jay
william said:
Hi everyone,
I just started learning VB.NET, I found there are a lots methods passing
object parameter by value. For example,
Private Sub Button3_Click(ByVal sender As System.Object, ByVal e As
System.EventArgs) Handles Button3.Click