Me, My, MyBase et MyClass dans Visual Basic
Me
, My
, MyBase
et MyClass
en Visual Basic ont des noms similaires, mais des objectifs différents. Cette rubrique décrit chacune de ces entités afin de les distinguer.
Moi
Le mot clé Me
permet de faire référence à l’instance spécifique d’une classe ou d’une structure dans laquelle le code est en cours d’exécution. Me
se comporte comme une variable objet ou une variable de structure faisant référence à l’instance actuelle. L’utilisation de Me
est particulièrement utile pour transmettre des informations sur l’instance en cours d’exécution d’une classe ou d’une structure à une procédure dans une autre classe, structure ou un autre module.
Imaginons par exemple la procédure suivante dans un module.
Sub ChangeFormColor(FormName As Form)
Randomize()
FormName.BackColor = Color.FromArgb(Rnd() * 256, Rnd() * 256, Rnd() * 256)
End Sub
Vous pouvez appeler cette procédure et transmettre l’instance actuelle de la classe Form en tant qu’argument à l’aide de l’instruction suivante.
ChangeFormColor(Me)
My
La fonctionnalité My
permet d’accéder de manière simple et intuitive à un certain nombre de classes .NET Framework, ce qui permet à l’utilisateur Visual Basic d’interagir avec l’ordinateur, l’application, les paramètres, les ressources, etc. Pour obtenir la liste de ces classes, consultez la référence Objets runtime Visual Basic.
MyBase
Le mot clé MyBase
se comporte comme une variable objet faisant référence à la classe de base de l’instance actuelle d’une classe. MyBase
est couramment utilisé pour accéder aux membres de la classe de base qui sont remplacés ou masqués dans une classe dérivée. MyBase.New
est utilisé pour appeler explicitement un constructeur de classe de base à partir d’un constructeur de classe dérivé.
MyClass
Le mot clé MyClass
se comporte comme une variable objet faisant référence à l’instance actuelle d’une classe telle qu’elle a été implémentée à l’origine. MyClass
est similaire à Me
, mais tous les appels de méthode sur celui-ci sont traités comme si la méthode était NotOverridable
.