Es bezieht sich effektiv auf "das" in den Argumenten für den Basiskonstruktor, was Sie nicht tun können.
Wenn Ihr Delegierter wirklich keinen Zugriff auf this
benötigt (was Ihr Beispiel nicht tut), können Sie ihn einfach statisch machen. Sie können auch eine Methodengruppenumwandlung verwenden, um es einfacher zu machen:
Wenn Sie >> "this" verwenden müssen, könnten Sie:
Machen Sie es zu einer statischen Methode, die eine geeignete Instanz übernimmt, z. B.
%Vor% Grundsätzlich erhalten Sie den Compilerfehler, weil Sie auf die Instanzmethode Method
ohne eine Instanz Ihrer Klasse Derived
verweisen. Wenn Sie base
aufrufen, ist der Konstruktor noch nicht fertig und Sie haben noch keine Instanz Ihrer Klasse. Wenn du Method
static
gemacht hast, würde es gut funktionieren.
Eine andere Lösung besteht darin, einfach die Initialisierung des Delegaten auf die abgeleitete Klasse zu verschieben:
%Vor%Die "Problemumgehung" wäre, Methode () zu einer statischen Methode zu machen.
Ich kann die technischen Gründe, warum dies nicht funktioniert, nicht erklären, aber im Wesentlichen versuchen Sie, eine Methode für eine Instanz aufzurufen, die noch nicht existiert. Wie könnte es möglicherweise funktionieren?