Kompilatorfel CS0120

En objektreferens krävs för det icke-statiska fältet, metoden eller egenskapen "member"

För att kunna använda ett icke-statiskt fält, en metod eller en egenskap måste du först skapa en objektinstans. Mer information om statiska metoder finns i Statiska klasser och Statiska klassmedlemmar. Mer information om hur du skapar instanser av klasser finns i Instanskonstruktorer.

Exempel 1

Följande exempel genererar CS0120:

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

Åtgärda det här felet genom att först skapa en instans av klassen:

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

Exempel 2

CS0120 genereras också om det finns ett anrop till en icke-statisk metod från en statisk metod enligt följande:

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

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

Åtgärda det här felet genom att först skapa en instans av klassen:

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

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

Exempel 3

På samma sätt kan en statisk metod inte anropa en instansmetod om du inte uttryckligen ger den en instans av klassen enligt följande:

// CS0120_3.cs
using System;

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

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

Du kan också lägga till nyckelordet static i metoddefinitionen för att åtgärda det här felet:

// CS0120_3.cs
using System;

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

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

Se även