Ok, hier ist die Frage... ist das neue Schlüsselwort obsolet?
Betrachte in C# (und Java, glaube ich) gibt es strenge Regeln für Typen. Klassen sind Referenztypen und können nur auf dem Heap erstellt werden. POD-Typen werden auf dem Stack erstellt; wenn Sie sie auf dem Heap zuweisen möchten, müssen Sie sie in einem Objekttyp boxen. In C# sind structs
die Ausnahme, sie können auf dem Stack oder dem Heap erstellt werden.
Angesichts dieser Regeln, ergibt es Sinn, dass wir immer noch das neue Schlüsselwort verwenden müssen? Würde es nicht sinnvoll sein, dass die Sprache die richtige Allokationsstrategie basierend auf dem Typ verwendet?
Zum Beispiel, müssen wir derzeit schreiben:
SomeClassType x = new SomeClassType();
anstatt
SomeClassType x = SomeClassType();
oder auch nur
SomeClassType x;
Der Compiler würde, basierend darauf, dass der erstellte Typ ein Referenztyp ist, den Speicher für x auf dem Heap allozieren.
Dies gilt für andere Sprachen wie Ruby, PHP, et al. C/C++ erlauben dem Programmierer mehr Kontrolle darüber, wo Objekte erstellt werden, daher hat es guten Grund, das neue Schlüsselwort zu erfordern.
Ist new
nur ein Überbleibsel aus den 60er Jahren und unserem C-basierten Erbe?