Eine Verständnisfrage zu
Nullable<T> in
Spring4D:
Delphi-Quellcode:
procedure test();
var
numberValue: Spring.Nullable<Integer>;
begin
numberValue := 99.0;
numberValue := TObject.Create();
end;
Der Compiler hat nichts dagegen, einem
Nullable<Integer>
praktisch alles mögliche zuzuweisen. Das liegt daran, dass für ein Nullable eine implizite Operator-Überladung für
Variant
definiert ist:
class operator Implicit(const value: Variant): Nullable<T>;
Kritik an Spring4D kann ich mir nicht erlauben, aber ich finde das schrecklich. Warum sollte man so etwas wollen? Zwischen
Nullable<T>
und
T
hin und her ist klar, aber warum Variant zu Nullable<T> generell erlauben?