Heim > Backend-Entwicklung > C++ > Wie beheben Sie den C# CS0120 -Fehler: 'Eine Objektreferenz ist für das nichtstatische Feld, die Methode oder die Eigenschaft erforderlich'?

Wie beheben Sie den C# CS0120 -Fehler: 'Eine Objektreferenz ist für das nichtstatische Feld, die Methode oder die Eigenschaft erforderlich'?

Linda Hamilton
Freigeben: 2025-02-02 17:56:09
Original
384 Leute haben es durchsucht

How to Resolve the C# CS0120 Error:

C# CS0120 Fehler: "Eine Objektreferenz ist für das nicht statische Feld, die Methode oder die Eigenschaft 'foo'"

erforderlich

Dieser Fehler tritt auf, wenn Sie versuchen, aus einem statischen Kontext auf ein nicht statisches Mitglied (Feld, Methode oder Eigenschaft) zugreifen zu können, z. B. eine statische Methode oder eine statische Eigenschaft.

Szenario:

Stellen Sie sich diesen Code vor:

<code class="language-csharp">public partial class MyForm : Form
{
    private void MyMethod(object sender, EventArgs e)
    {
        // Error: Accessing a non-static member from a static method
        UpdateLabel(someValue); 
    }

    private void UpdateLabel(string text)
    {
        myLabel.Text = text; // myLabel is a non-static member (control)
    }
}</code>
Nach dem Login kopieren

Lösungen:

Mehrere Ansätze können dies lösen:

  1. Machen Sie das Mitglied statisch: , wechseln Sie gegebenenfalls auf das Mitglied, das zu static zugegriffen wird. Dies funktioniert nur, wenn das Mitglied nicht auf instanzspezifische Daten angewiesen ist.

    <code class="language-csharp">public static void UpdateLabel(string text) // Now static
    {
        // Access static members only here!  You can't access myLabel directly.
    }</code>
    Nach dem Login kopieren
  2. Singleton -Muster: Verwenden Sie einen Singleton, um auf die Instanz Ihrer Klasse zuzugreifen. Dies ist geeignet, wenn Sie nur eine Instanz der Klasse benötigen.

    <code class="language-csharp">public partial class MyForm : Form
    {
        private static MyForm _instance; // Singleton instance
    
        public static MyForm Instance
        {
            get { return _instance ?? (_instance = new MyForm()); }
        }
    
        private MyForm() { } // Private constructor
    
        private void MyMethod(object sender, EventArgs e)
        {
            Instance.UpdateLabel(someValue); 
        }
    
        // UpdateLabel remains non-static
    }</code>
    Nach dem Login kopieren
  3. instanziieren Sie die Klasse: Erstellen Sie eine Instanz der Klasse innerhalb der statischen Methode.

    <code class="language-csharp">private static void MyMethod(object sender, EventArgs e)
    {
        var form = new MyForm();
        form.UpdateLabel(someValue);
    }</code>
    Nach dem Login kopieren
  4. Machen Sie die Aufrufmethode nicht statisch: Die einfachste Lösung besteht darin

    <code class="language-csharp">private void MyMethod(object sender, EventArgs e) // Remains non-static
    {
        UpdateLabel(someValue); 
    }</code>
    Nach dem Login kopieren

Weitere Lesen:

    Konsultieren Sie die Dokumentation von Microsoft zum CS0120 -Fehler für detailliertere Informationen.
  • Betrachten Sie die Auswirkungen jeder Lösung sorgfältig. Die Auswahl des richtigen Ansatzes hängt vom Design Ihrer Anwendung und dem spezifischen Kontext des Codes ab.

Das obige ist der detaillierte Inhalt vonWie beheben Sie den C# CS0120 -Fehler: 'Eine Objektreferenz ist für das nichtstatische Feld, die Methode oder die Eigenschaft erforderlich'?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Quelle:php.cn
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
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage