Eine Fehlermeldung wäre ja schon mal was
. Und eine Prüfung auf nil ist soooo teuer nun auch nicht, da laufen z.B. in managed Umgebungen ganz andere Dinge unsichtbar ab. Wenn die Instanz nicht nil, und dennoch ungültig ist - das ist was anderes. Dann kann ich ja auch auf die Felder zugrifen und erhalte lustige Dinge.
Und ja, der Debugger wäre wohl eher geeignet an dieser Stelle. Es müsste schlicht eine
Exception her.
Ich sehe hier weder einen Grund für eine Fehlermeldung, noch für eine
Exception. Der Aufruf
FTest.Test(str);
wird vom Compiler implizit umgewandelt in so etwas wie
TDummyClass.Test(FTest, str);
. Solange innerhalb der Methode nicht auf Self (= FTest) zugegriffen wird, ist doch egal, ob das nil ist. Wenn ich aber darauf zugreife, wird eine Nil-Referenz ausgelöst und da wäre dann ja die
Exception.
Der Compiler könnte allenfalls einen Hinweis auswerfen, daß die Methode vielleicht besser als Class-Method deklariert werden sollte, aber mehr braucht's
IMHO nicht. Eine generelle Überprüfung von Self auf nil halte ich für Verschwendung.
Übrigens funktioniert auch folgendes:
Delphi-Quellcode:
FTest := nil;
FTest.Free;
Die Implementierung von Free prüft dabei explizit auf
Self <> nil
. Eine solche Überprüfung kann selbstverständlich auch in jeder anderen Methode einer Klasse erfolgen und nach Gusto auf das Ergebnis reagiert werden. Muss ja nicht immer 'ne
Exception sein.