new (Operator)

Verwenden Sie den EGL-Operator 'new', um Speicher eines bestimmten Typs dynamisch zu erstellen. Wenn Sie eine Verweistypvariable erstellen, wird mit dem Operator 'new' ein Verweis auf den Speicher erstellt. Ansonsten wird der Speicher selbst erstellt.

Sie können mit dem Operator 'new' einen SET-Werteblock angeben. Bitte beachten Sie, dass bei Angabe eines SET-Werteblocks automatisch das Null-Flag für eine Variable, die Nullwerte enthalten darf, inaktiviert wird. Weitere Informationen finden Sie unter SET-Werteblöcke. Beispiele enthält der Abschnitt 'Verwendung des Operators 'new' in diesem Thema.

Syntax

Syntaxdiagramm für die Anweisung 'new'
Abschnittsname
Der Name eines EGL-Abschnitts.

Verwendung des Operators 'new'

Die einzige effiziente Verwendung des Operators 'new' besteht im Erstellen von Speicher ohne Zuordnung eines entsprechenden Namens. Im folgenden Beispiel wird ein Wörterverzeichnis (Dictionary) als Parameter für eine Funktion angegeben:
func( new Dictionary{ key1 = 3, key2 = "Hello", key3 = false } );
Im folgenden Beispiel enthält der Datensatz ein Feld, bei dem es sich um eine Feldgruppe eines anderen Datensatztyps handelt. In diesem Fall müssen Sie den Operator 'new' verwenden:
record CustomerArray
	myCustomers CustomerRec[] = 
    [ new CustomerRec { idNum = 101 }, 
      new CustomerRec { idNum = 102 } ];
end

Die Alternative, CustomerRec-Variablen zum Einfügen in die Feldgruppe zu deklarieren, ist nicht möglich. Ein Initialisierungsoperator für den Datensatz kann mit Ausnahme der Felder innerhalb des Datensatzes selbst auf keinerlei weitere Variablen zugreifen.

Sie können den Operator 'new' in einer Variablendeklaration wie folgt verwenden:
myInt INT = new INT;
Diese Deklaration bietet keinen Vorteil, aber einen wesentlichen Nachteil im Vergleich zu einer Standarddeklaration wie der folgenden:
myInt INT;

Wenn Sie den Operator 'new' verwenden, wird der Speicher zweimal reserviert. Zunächst wird durch die Zuordnung auf der linken Seite Speicher für eine Variable vom Typ INT erstellt, die den Namen 'myInt' erhält. Anschließend erstellt der Operator 'new' eine zweite Variable vom Typ INT und ordnet deren Wert der ersten Variablen zu. Die zweite INT-Variable wird nicht erneut verwendet.

Mithilfe der folgenden Deklaration können Sie eine nullfähige Variable erstellen (durch das Fragezeichen gekennzeichnet), deren Anfangswert nicht null ist:
myInt INT? = new INT;
Durch die linke Seite der Zuordnung wird eine Variable erstellt, die Nullwerte enthalten darf. Der Operator 'new' erstellt eine Variable vom Typ INT, die nicht nullfähig ist, und ordnet deren Wert der ersten INT-Variablen zu. Sie können denselben Effekt mit der folgenden Zeile erzielen, durch die eine einzelne Variable erstellt wird:
myInt INT?{};

Feedback