67 Stimmen

Anruf und Anrufvirt

Was ist der Unterschied zwischen den CIL-Anweisungen "Call" und "Callvirt"?

1voto

Abhilash NK Punkte 461

Nur hinzufügen, um die oben genannten Antworten, ich denke, die Änderung wurde lange zurück, so dass Callvirt IL-Anweisung für alle Instanzmethoden und Call IL-Anweisung wird für statische Methoden generiert erhalten gemacht.

Hinweis :

Pluralsight-Kurs "C# Language Internals - Part 1 von Bart De Smet (Video -- Call instructions and call stacks in CLR IL in a Nutshell)

und auch https://blogs.msdn.microsoft.com/ericgu/2008/07/02/why-does-c-always-use-callvirt/

2 Stimmen

call wird auch für Basisanrufe verwendet. Außerdem glaube ich, dass der Roslyn-Compiler Folgendes erzeugt call Anweisungen für versiegelte/nicht virtuelle Methoden, wenn es trivialerweise feststellen kann, dass das Objekt niemals null sein wird (z. B.. Aufrufe, die durch den Null-Bedingungsoperator erzeugt werden ).

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X