Und das ist ein Nachteil?
Das kommt darauf an, was du als "Nachteil" siehst.
Delphi-Quellcode:
type
TArray1 = array of String;
TArray2, TArray3 = array of String;
TArray4 = TArray<String>;
TArray5 = TArray<String>;
begin
TypeInfo(TArray1) = TypeInfo(TArray2) // Ergibt False
TypeInfo(TArray2) = TypeInfo(TArray3) // Ergibt True
TypeInfo(TArray4 {oder: 5}) = TypeInfo(TArray1 {oder: 2 oder: 3}) // Ergibt False
TypeInfo(TArray4) = TypeInfo(TArray5) // Ergibt Tue
end.
Meiner Meinung nach sollte man eigentlich in modernen Anwendungen immer
TArray<T> benutzen, außer es gibt einen wirklich guten Grund es nicht zu tun.
Der "einzige" Grund meiner Meinung nach sind hier offene Array-Parameter, denn die können halt auch staische Arrays entgegennehmen, was ein dynamischer Array-Parameter nicht kann.
Delphi-Quellcode:
//Grundsättzlich gilt, dass...
var Strs: TArray<String>;
// ...immer gleichbedeutend mit...
type TStrs = TArray<String>;
var Strs: TStrs;
//...und mit...
type TStrs = array of String;
var Strs: TStrs;
// ...ist, ohne Ausnahmen.
// Voraussetzung hierfür ist, dass alle Variablen immer den gleichen Typen benutzen.