Heim > Backend-Entwicklung > C++ > Warum tritt 'CS0120: Eine Objektreferenz erforderlich ...' auf, wenn Sie eine nicht statische Methode aus einer statischen Methode aufrufen?

Warum tritt 'CS0120: Eine Objektreferenz erforderlich ...' auf, wenn Sie eine nicht statische Methode aus einer statischen Methode aufrufen?

DDD
Freigeben: 2025-02-02 17:51:11
Original
631 Leute haben es durchsucht

Why Does

Fehler: "CS0120: Für das nichtstatische Feld, die Methode oder die Eigenschaft 'Foo'"

Szenario ist eine Objektreferenz erforderlich:

Betrachten Sie den folgenden Code:
private static void SumData(object state)
{
    // Calling a non-static member from a static method
    setTextboxText(result);
}
Nach dem Login kopieren

Erläuterung:

Der Fehler "CS0120" tritt auf, wenn Sie versuchen, auf ein nicht statisches Mitglied zuzugreifen (( Feld, Methode oder Eigenschaft) aus einem statischen Kontext. In diesem Fall ist die setTextBoxText-Methode ein nicht statisches Mitglied der Form1-Klasse und kann nicht aus der statischen Sumdata-Methode zugegriffen werden.

Machen Sie das nicht statische Mitglied statisch:

  • Verwenden Sie ein statisches Singleton von Form1:
static void setTextboxText(int result)
{
    // Implementation details
}
Nach dem Login kopieren
  • Übergeben Sie eine Instanz von Form1 an die aufrufende Methode:
class Form1
{
    public static Form1 It;

    public Form1()
    {
        It = this;
    }

    private static void SumData(object state)
    {
        Form1.It.setTextboxText(result);
    }
}
Nach dem Login kopieren
  • Machen Sie die aufrufende Methode nicht Statisch:
private static void SumData(Form1 form, object state)
{
    form.setTextboxText(result);
}
Nach dem Login kopieren
  • Zusätzliche Informationen:
private void SumData(object state)
{
    setTextboxText(result);
}
Nach dem Login kopieren

statische Mitglieder können nur auf andere statische Mitglieder zugreifen. Nichtstatische Mitglieder können sowohl auf statische als auch nicht statische Mitglieder zugreifen. Greifen Sie auf das nicht statische Mitglied zu.

    Weitere Informationen zu diesem Fehler finden Sie in MSDN.

Das obige ist der detaillierte Inhalt vonWarum tritt 'CS0120: Eine Objektreferenz erforderlich ...' auf, wenn Sie eine nicht statische Methode aus einer statischen Methode aufrufen?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage