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
Linda HamiltonOriginal
2025-02-02 17:56:09438Durchsuche

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>

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

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!

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