Ich versuche, meinen Kopf herumzukriegen, wenn in C # eine frühe / späte Bindung auftritt.
Nicht virtuelle Methoden sind immer früh gebunden. Virtuelle Methoden sind immer spät gebunden: Der Compiler fügt zusätzlichen Code ein, um die tatsächliche Methode aufzulösen, an die zur Ausführungszeit gebunden werden soll, und prüft die Typensicherheit. Der Subtyp-Polymorphismus verwendet also eine späte Bindung.
Das Aufrufen von Methoden unter Verwendung von Reflexion ist ein Beispiel für eine späte Bindung. Wir schreiben den Code, um dies zu erreichen, im Gegensatz zum Compiler. (ZB Aufruf von COM-Komponenten.)
VB.NET unterstützt implizite späte Bindung, wenn Option Strict deaktiviert ist. Ein Objekt wird spät gebunden, wenn es einer Variablen zugewiesen wird, die als vom Typ Objekt deklariert ist. Der VB-Compiler fügt Code ein, um zur Ausführungszeit an die richtige Methode zu binden und ungültige Aufrufe abzufangen. C # unterstützt diese Funktion nicht.
Gehe ich in die richtige Richtung?
Was ist mit dem Aufrufen von Delegaten und dem Aufrufen einer Methode über eine Schnittstellenreferenz? Ist das früh oder spät bindend?