MyClass
更新 : 2007 年 11 月
クラスの現在のインスタンスのメンバを、派生クラスのオーバーライドによって置き換えられていない状態で参照できるようにします。
解説
MyClass キーワードは、クラスの現在のインスタンスをもともと実装されている状態で参照するオブジェクト変数と同じように動作します。MyClass は Me と似ていますが、MyClass から呼び出されたメソッドおよびプロパティは、NotOverridable であるかのように扱われます。したがって、メソッドまたはプロパティは、派生クラスでのオーバーライドによる影響を受けません。Me と 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.
Me.testMethod()
End Sub
Public Sub useMyClass()
' The following call uses this version and not any override.
MyClass.testMethod()
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".
testObj.useMe()
' The following call displays "Base class string".
testObj.useMyClass()
End Sub
End Class
derivedClass は testMethod をオーバーライドしていますが、useMyClass の MyClass キーワードによってオーバーライドの影響は無効になり、testMethod の基本クラス バージョンに対する呼び出しが行われます。
Shared (Visual Basic) メソッドの内部では MyClass を使用できませんが、インスタンス メソッドの中で MyClass を使ってクラスの共有メンバにアクセスすることはできます。