Bei der objektorientierten Programmierung erfordern nicht statische Elemente wie Instanzvariablen und Methoden eine Objektinstanz zugegriffen. Wenn Sie versuchen, auf diese nicht-statischen Mitglieder zuzugreifen, ohne zuvor ein Objekt zu erstellen, wird die Fehlermeldung „Für den Zugriff auf ein nicht-statisches Mitglied ist eine Objektreferenz erforderlich“ angezeigt.
Eine Möglichkeit, diesen Fehler zu beheben, besteht darin, die betroffenen Mitglieder statisch zu machen. Statische Mitglieder sind mit der Klasse selbst verknüpft, nicht mit einzelnen Objekten. Dies bedeutet, dass auf sie ohne eine Objektinstanz zugegriffen werden kann.
In dem von Ihnen bereitgestellten Codeausschnitt sind beispielsweise die Methoden „StartClick“ und „StopClick“ nicht statisch. Um den Fehler zu beheben, können Sie diese Methoden wie folgt ändern:
public static void StartClick(object obj, EventArgs args) {} public static void StopClick(object obj, EventArgs args) {}
Dies würde jedoch einen globalen Status in Ihre Anwendung einführen, was im Allgemeinen nicht als bewährte Vorgehensweise gilt.
Eine andere Möglichkeit, den Fehler zu beheben, besteht darin, eine Instanz der Klasse zu erstellen. Dadurch können Sie über die Instanzreferenz auf nicht statische Mitglieder zugreifen.
Sie könnten beispielsweise den folgenden Code hinzufügen, bevor Sie auf die Methoden StartClick und StopClick zugreifen:
MainClass instance = new MainClass(); btn.Clicked += instance.StartClick; btn_stop.Clicked += instance.StopClick;
Durch Erstellen einer Instanz Von MainClass haben Sie eine Objektreferenz, die für den Zugriff auf nicht statische Mitglieder verwendet werden kann.
Die Entscheidung, ob verwendet werden soll Die Verwendung statischer Member oder Objektinstanzen hängt von den spezifischen Anforderungen Ihrer Anwendung ab. Wenn die Vermeidung globaler Zustände von entscheidender Bedeutung ist, ist die Erstellung von Objektinstanzen der bevorzugte Ansatz. Dies sorgt für eine bessere Kapselung und Testbarkeit Ihres Codes.
Das obige ist der detaillierte Inhalt vonWas verursacht den Fehler „Objektreferenz erforderlich' und wie kann er behoben werden?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!