Einzelnen Beitrag anzeigen

Der schöne Günther

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

Unsichtbare Implizite Konvertierung von T zu "Array von T"

  Alt 20. Feb 2020, 17:51
Delphi-Version: 10 Seattle
Das kannte ich auch noch nicht:

Delphi-Quellcode:
type
    TNamespace = class
       class procedure AcceptBytes1(const bytes: array of byte);
       class procedure AcceptBytes2(const bytes: TBytes {=TArray<Byte>});
    end;

procedure p();
var
   someByte: Byte;
begin
   someByte := 42;

   TNameSpace.AcceptBytes1(someByte); // Warum geht das !?!
   //TNameSpace.AcceptBytes2(someByte); // E2010 - Inkompatible Typen

   TNameSpace.AcceptBytes1([someByte]);
   TNameSpace.AcceptBytes2([someByte]);
end;
Warum kann ich in AcceptBytes1(..) einfach ein Byte reinstecken wenn der Parameter eigentlich array of byte wäre?
Und warum ist das ein Unterschied ob ich es "array of byte" oder "TArray<Byte>" ist? Das habe ich nach all den Jahren mit Delphi ehrlich gesagt immer noch nicht verstanden...
  Mit Zitat antworten Zitat