Einzelnen Beitrag anzeigen

Der schöne Günther

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

Warum ist 'nil' einem TObject ähnlicher als einem IInterface?

  Alt 17. Jul 2014, 10:46
Delphi-Version: XE5
Gut, man muss einmal drüber stolpern und weiß es dann. Aber steht das irgendwo geschrieben, dass es so ist? Oder gibt es vielleicht sogar einen Grund?

Delphi-Quellcode:
program Project2;

{$APPTYPE CONSOLE}

{$R *.res}

procedure someProc(param: IInterface); overload;
begin
   //
end;


procedure someProc(param: TObject); overload;
begin
   //
end;


begin
   someProc(nil); // er springt in someProc(const param: TObject);
   readln;
end.
Immerhin kann man sich darüber stören dass das nicht mit der IDE-Vorschau ("Code Insight"?) übereinstimmt, dass beispielsweise die IInterface-Version fett dargestellt wird, aber in Wirklichkeit die TObject-Version aufgerufen wird.
  Mit Zitat antworten Zitat