Visual Basic における Me、My、MyBase、MyClass

Visual Basic の MeMyMyBaseMyClass は、名前は似ていますが目的が異なります。 このトピックでは、これらのエンティティを区別するために、それぞれについて説明します。

Me

Me キーワードを使用すると、コードが現在実行されている、クラスまたは構造体の特定のインスタンスを参照できます。 Me は、現在のインスタンスを参照するオブジェクト変数または構造体変数と同様に動作します。 Me の使用は、クラスまたは構造体の現在実行されているインスタンスに関する情報を、別のクラス、構造体、またはモジュールのプロシージャに渡す際に特に役立ちます。

たとえば、モジュールに次のプロシージャがあるとします。

Sub ChangeFormColor(FormName As Form)  
   Randomize()  
   FormName.BackColor = Color.FromArgb(Rnd() * 256, Rnd() * 256, Rnd() * 256)  
End Sub  

このプロシージャを呼び出し、次のステートメントを使用して、Form クラスの現在のインスタンスを引数として渡すことができます。

ChangeFormColor(Me)  

My

My 機能を使用すると、多数の .NET Framework クラスに簡単かつ直感的にアクセスできるので、Visual Basic ユーザーはコンピューター、アプリケーション、設定、リソースなどを操作できます。 これらのクラスの一覧については、「Visual Basic ランタイム オブジェクト」のリファレンスを参照してください。

MyBase

MyBase キーワードは、クラスの現在のインスタンスの基底クラスを参照するオブジェクト変数と同様に動作します。 MyBase は、派生クラスでオーバーライドまたはシャドウされた基底クラスのメンバーにアクセスするためによく使用されます。 MyBase.New は、派生クラスのコンストラクターから基底クラスのコンストラクターを明示的に呼び出すために使用されます。

MyClass

MyClass キーワードは、もともと実装されているクラスの現在のインスタンスを参照するオブジェクト変数と同様に動作します。 MyClassMe に似ていますが、これに対するすべてのメソッド呼び出しは、メソッドが NotOverridable であるかのように扱われます。

関連項目