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
DDDOriginal
2025-02-02 17:51:11640Durchsuche

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);
}

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
}
  • Ü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);
    }
}
  • Machen Sie die aufrufende Methode nicht Statisch:
private static void SumData(Form1 form, object state)
{
    form.setTextboxText(result);
}
  • Zusätzliche Informationen:
private void SumData(object state)
{
    setTextboxText(result);
}

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!

Stellungnahme:
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