Ich bin neu in Delphi und habe einige Tests durchgeführt, um festzustellen, auf welche Objektvariablen und Stapelvariablen standardmäßig initialisiert wird:
TInstanceVariables = class
fBoolean: boolean; // always starts off as false
fInteger: integer; // always starts off as zero
fObject: TObject; // always starts off as nil
end;
Dies ist das Verhalten, das ich von anderen Sprachen gewohnt bin, aber ich frage mich, ob es sicher ist, sich in Delphi darauf zu verlassen? Ich frage mich beispielsweise, ob dies möglicherweise von einer Compilereinstellung abhängt oder auf verschiedenen Computern unterschiedlich funktioniert. Ist es normal, sich auf initialisierte Standardwerte für Objekte zu verlassen, oder legen Sie explizit alle Instanzvariablen im Konstruktor fest?
Was Stapelvariablen (Prozedurebene) betrifft, zeigen meine Tests, dass unitialisierte Boolesche Werte wahr sind, unitialisierte Ganzzahlen 2129993264 sind und nicht initialisierte Objekte nur ungültige Zeiger sind (dh nicht Null). Ich vermute, die Norm ist, immer Variablen auf Prozedurebene festzulegen, bevor auf sie zugegriffen wird.