Provides a way to refer to the current class instance members without them being replaced by any derived class overrides.


The MyClass keyword behaves like an object variable referring to the current instance of a class as originally implemented. MyClass is similar to Me, but every method and property call on MyClass is treated as if the method or property were NotOverridable. Therefore, the method or property is not affected by overriding in a derived class. The following example compares Me and MyClass.

Class baseClass
    Public Overridable Sub testMethod()
        MsgBox("Base class string")
    End Sub
    Public Sub useMe()
        ' The following call uses the calling class's version, even if 
        ' that version is an override.
    End Sub
    Public Sub useMyClass()
        ' The following call uses this version and not any override.
    End Sub
End Class
Class derivedClass : Inherits baseClass
    Public Overrides Sub testMethod()
        MsgBox("Derived class string")
    End Sub
End Class
Class testClasses
    Sub startHere()
        Dim testObj As derivedClass = New derivedClass()
        ' The following call displays "Derived class string".
        ' The following call displays "Base class string".
    End Sub
End Class

Even though derivedClass overrides testMethod, the MyClass keyword in useMyClass nullifies the effects of overriding, and the compiler resolves the call to the base class version of testMethod.

You cannot use MyClass inside a Shared (Visual Basic) method, but you can use it inside an instance method to access a shared member of a class.

See Also


Inheritance Basics