[QR]Qu'est-ce que le mot clé Self et comment l'utiliser ?
Schématiquement à la question
qui suis-je ?, le mot clé
Self répond
moi-même en renvoyant la référence de l'instance en cours d'utilisation au sein d'une méthode de sa classe.
Self permet donc de connaître l'instance en cours et dans certains cas de lever toute ambiguité.
Par exemple ici :
1 2 3 4 5 6
|
procedure TObject.Free;
begin
if Self <> nil then
Destroy;
end; |
on souhaite savoir si l'objet en cours est instancié ou pas (nil) avant d'appeler le destructeur.
Self est aussi une référence sur une classe et peut donc ne pas être affectée (MonObjet:=Nil). Cette méthode étant statique son appel ne pose pas de problème dans ce cas.
Et là :
1 2 3 4
|
with TPaintBox(Sender).Canvas.Brush do
begin
Color := Self.Color; |
il y a une ambiguité du à la présence de la propriété
color commune à l'instance en cours d'utilisation et à un objet imbriqué (Canvas.Brush).
Self permet ici de savoir exactement de quelle propriété on parle.
Dans le cas d'une méthode de classe l'utilisation de
Self à une signification différente, il s'agit d'une variable de type référence de classe contenant la classe effective de l'objet.
Schématiquement dans ce cas le mot clé
Self répond à la question
De quelle classe suis-je ? en répondant
De la classe TMaclasse.
Partager