Previous section   Next section

5.6 The Me Keyword

The keyword Me refers to the current instance of an object. The Me reference is a hidden reference to every non-shared method of a class; shared methods are discussed later in this chapter. Each method can refer to the other methods and variables of that object by way of the Me reference.

The Me reference is typically used in any of three ways. The first way is to qualify instance members that have the same name as parameters, as in the following:

Public Sub SomeMethod(ByVal Hour As Integer)
   Me.Hour = Hour
End Sub

In this example, SomeMethod( ) takes a parameter (Hour) with the same name as a member variable of the class. The Me reference is used to resolve the ambiguity. While Me.Hour refers to the member variable, Hour refers to the parameter.

The argument in favor of this style, which is often used in constructors, is that you pick the right variable name and then use it both for the parameter and for the member variable. The counter-argument is that using the same name for both the parameter and the member variable can be confusing.

The second use of the Me reference is to pass the current object as a parameter to another method, as in the following code:

Public Sub myMethod( )
   Dim someObject As New SomeType( )
   someObject.SomeMethod(Me)
End Sub

In this code snippet, you call a method on an object, passing in the Me reference. This allows the method you're calling access to the methods and properties of the current object.

The third use of the Me reference is with indexers, which are covered in Chapter 9.

You can also use the Me reference to make the copy constructor more explicit:

Public Sub New(ByVal that As Time)
   Me.year = that.year
   Me.month = that.month
   Me.date = that.date
   Me.hour = that.hour
   Me.minute = that.minute
   Me.second = that.second
End Sub

In this snippet, Me refers to the current object (the object whose constructor is running), and that refers to the object passed in.

The keyword Me always refers to the current object; the argument name that was chosen for convenience.


  Previous section   Next section
Top