Error del compilador CS0120

Se requiere una referencia a un objeto para el campo, método o propiedad no estática "member"

Para usar un campo no estático, método o propiedad, primero debe crear una instancia de objeto. Para obtener más información sobre los métodos estáticos, vea Clases estáticas y sus miembros. Para obtener más información sobre la creación de instancias de clases, vea Constructores de instancias.

Ejemplo 1

En el ejemplo siguiente se genera el error 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
    }
}

Para corregir este error, cree primero una instancia de la clase:

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

Ejemplo 2

CS0120 también se generará si existe una llamada a un método no estático desde un método estático, de la manera siguiente:

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

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

Para corregir este error, cree primero una instancia de la clase:

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

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

Ejemplo 3

De manera similar, un método estático no puede llamar a un método de instancia a no ser que le proporcione explícitamente una instancia de la clase, de la manera siguiente:

// CS0120_3.cs
using System;

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

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

Para corregir este error, también puede agregar la palabra clave static a la definición del método:

// CS0120_3.cs
using System;

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

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

Consulte también