Ich möchte die Diskussion nicht ausufern lassen, aber kurz noch Folgendes:
Zitat von
himitsu:
Wenn jedes Free den Objektzeiger ändern könnte/würde, dann würde es hier Probleme geben.
Delphi-Quellcode:
procedure Test(const Obj: TObject);
begin
obj.Free;
end;
Das würde dann wohl der Compiler verbieten, genauso wie FreeAndNil in obiger Methode.
Zitat von
himitsu:
- .Free ist eine Methode
- Methoden ändern niemal Objektvariablen
- und ich weiß nicht warum sich jemand sowas wirklich wünschen würde?
Weil es Probleme lösen würde! Abgesehen davon: wenn es sich keiner wünscht, warum wurde es dann in Prism so gemacht?
BTW: Ich kann mich an eine Sprache namens Clipper erinnern, mit der man vor 20 Jahren so etwas per Preprozessordirektive leicht lösen konnte.
Zitat von
himitsu:
Immerhin gibt es hierfür FreeAndNil und da weiß man genau was es macht.
.Free gibt nur das Objekt frei und macht sonst nichts.
Schlimm genung, denn das ist ja das Problem...
A fool with a tool remains a fool.