Compilerfehler CS0120

Für das nicht statische Feld, die Methode oder die Eigenschaft „Member“ ist ein Objektverweis erforderlich

Um ein nicht statisches Feld, eine Methode oder Eigenschaft verwenden zu können, müssen Sie zunächst eine Objektinstanz erstellen. Weitere Informationen zu statischen Methoden finden Sie unter Statische Klassen und statische Klassenmember. Weitere Informationen zum Erstellen von Klasseninstanzen finden Sie unter Instanzkonstruktoren.

Beispiel 1

Im folgenden Beispiel wird CS0120 generiert:

// CS0120_1.cs
public class MyClass
{
    // Non-static field.
    public int i;
    // Non-static method.
    public void Method() { }
    // Non-static property.
    public int Prop
    {
        get
        {
            return 1;
        }
    }

    public static void Main()
    {
        i = 10;   // CS0120
        Method();   // CS0120
        int p = Prop;   // CS0120
    }
}

Um diesen Fehler zu beheben, erstellen Sie zunächst eine Instanz der Klasse:

// CS0120_1.cs
public class MyClass
{
    // Non-static field.
    public int i;
    // Non-static method.
    public void Method() { }
    // Non-static property.
    public int Prop
    {
        get
        {
            return 1;
        }
    }

    public static void Main()
    {
        var mc = new MyClass();
        mc.i = 10;
        mc.Method();
        int p = mc.Prop;
    }
}

Beispiel 2

Der Fehler CS0120 wird auch generiert, wenn eine statische Methode folgendermaßen eine nicht statische Methode aufruft:

// CS0120_2.cs
public class MyClass
{
    public void Method() { }

    public static void Main()
    {
        Method();   // CS0120
    }
}

Um diesen Fehler zu beheben, erstellen Sie zunächst eine Instanz der Klasse:

// CS0120_2.cs
public class MyClass
{
    public void Method() { }

    public static void Main()
    {
        var mc = new MyClass();
        mc.Method();
    }
}

Beispiel 3

Genauso kann eine statische Methode keine Instanzmethode aufrufen, es sei denn, Sie geben ihr wie folgt explizit eine Instanz der Klasse:

// CS0120_3.cs
using System;

public class MyClass
{
    public static void Main()
    {
        DoIt("Hello There");   // CS0120
    }

    private void DoIt(string sText)
    {
        Console.WriteLine(sText);
    }
}

Um diesen Fehler zu beheben, können Sie der Methodendefinition auch das Schlüsselwort „static“ hinzufügen.

// CS0120_3.cs
using System;

public class MyClass
{
    public static void Main()
    {
        DoIt("Hello There");
    }

    private static void DoIt(string sText)
    {
        Console.WriteLine(sText);
    }
}

Weitere Informationen