次の方法で共有


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 を使ってクラスの共有メンバにアクセスすることはできます。

参照

概念

継承の基本

参照

Me

MyBase