Hat das static-Schlüsselwort von Delphi im systemeigenen Code irgendeinen Sinn?

8

Nach meinem Verständnis wurde das Schlüsselwort static aus Gründen der Kompatibilität mit .NET eingeführt (zusammen mit strict )

%Vor%

Die Unterschiede zwischen den Prozeduren First und Second sind: -

  1. First kann in einer abgeleiteten Klasse überschrieben werden
  2. First übergibt einen impliziten self-Parameter, der auf die Klasse TExample verweist.

Die Klassenprozedur Second kann nicht überschrieben werden und übergibt keine Parameter und ist daher .NET-kompatibel. Es ist also sinnvoll, das static -Schlüsselwort nur in nativem Code zu verwenden, da zwischen Delphi & amp; Prism-Syntax?

    
MikeJ-UK 17.07.2009, 10:41
quelle

2 Antworten

20

Statische Klassenmethoden haben kein verstecktes Klassenreferenzargument . Aus diesem Grund sind sie mit einfachen alten Funktionszeigern kompatibel und können daher für die Interaktion mit der Windows-API und anderen C-APIs verwendet werden. Beispiel:

%Vor%

(Natürlich hätten Sie stattdessen eine globale Funktion verwenden können, aber andere als globale Funktionen haben statische Klassenfunktionen eine eindeutige Zuordnung zu einer Klasse.)

    
Moritz Beutel 17.07.2009, 11:23
quelle
3

mit statisch, es ist ein bisschen schneller. Es gibt ein add esp, -8 in der Methode First, das in Second nicht vorhanden ist.

%Vor%

Erstens:

%Vor%

Zweitens:

%Vor%

Kurz gesagt - ich sehe keinen Grund.

    
Tobias Langner 17.07.2009 10:59
quelle

Tags und Links