Warum Invoke BeginInvoke und EndInvoke sind virtuell, wenn die interne Klasse versiegelt ist? [Duplikat]

8

Ich habe beobachtet, dass der Compiler auf eine Delegat-Deklaration wie folgt stieß:

public delegate string StringOperation(string myString);

Dann erzeugt der Compiler den folgenden Code:

%Vor%

Meine Frage ist, warum würde virtual Methoden generieren, wenn die Klasse selbst eine sealed Klasse ist?

Es hat keinen Sinn, virtual -Methoden zu erstellen, da wir nicht override haben können, richtig?

    
DevShot 02.02.2018, 12:10
quelle

1 Antwort

0

Ich bin mit diesem Teil des Frameworks nicht vertraut, aber Reflector gibt dies als die Definition von BeginInvoke :

an %Vor%

Mein Auge wurde auf das Attribut MethodImpl gelenkt. MethodCodeType.Runtime bedeutet:

  

Gibt an, dass die Methodenimplementierung von der Laufzeitumgebung bereitgestellt wird.

Also ich denke, es ist virtual , weil die Laufzeit ihre Funktionalität überschreiben wird. Und die Laufzeit könnte leicht die Klasse sealed übergeben.

    
Patrick Hofman 02.02.2018 12:20
quelle

Tags und Links