Einzelnen Beitrag anzeigen

Der schöne Günther

Registriert seit: 6. Mär 2013
6.159 Beiträge
 
Delphi 10 Seattle Enterprise
 
#1

Cast von Nullable<> (Spring4D) nach Variant

  Alt 10. Sep 2014, 14:14
Ich habe mich vor den Delphi-Variants immer gedrückt und weiß wenig darüber. Hier, was ich glaube:

System.Variants.Null() liefert ein Variant, das bei seinen Casts immer "Null" zurückgibt. Auf eine Zahl ist es 0 , auf einen String ist es ein leerer String, auf eine Referenz ist es Nil usw.

Dementgegen steht System.Variants.Unassigned() : Das liefert einen Variant, der nichts ist. Man kann ihn nirgendwo hin casten, es steckt nichts drin.

Richtig soweit? Wenn ja wundert es mich, warum ein leeresSpring4D-Nullable<> (also mit nichts drin) beim Cast auf ein Variant Null() zurückgibt und nicht Unassigned() .

Welchen Grund hat das? Hier noch einmal der aktuelle Sourcecode in Spring:
Delphi-Quellcode:
class operator Nullable<T>.Implicit(const value: Nullable<T>): Variant;
var
  v: TValue;
begin
  if value.HasValue then
  begin
    v := TValue.From<T>(value.Value);
    if v.IsType<Boolean> then
      Result := v.AsBoolean
    else
      Result := v.AsVariant;
  end
  else
    Result := Null; // Warum?
end;
  Mit Zitat antworten Zitat