Compartir a través de


Error del compilador CS0120

Actualización: noviembre 2007

Mensaje de error

Se requiere una referencia a objeto para el campo, método o propiedad no estáticos 'miembro'
An object reference is required for the nonstatic field, method, or property 'member'

Para utilizar un campo, método o propiedad no estáticos debe crear en primer lugar una instancia de objeto. Para obtener más información acerca de los métodos estáticos, vea Clases estáticas y sus miembros (Guía de programación de C#). Para obtener más información sobre cómo crear instancias de clases, vea Constructores de instancias (Guía de programación de C#).

El código siguiente genera el error CS0120:

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

   public static void Main()
   {
      i = 10;   // CS0120
      f();   // CS0120
      int p = Prop;   // CS0120
      // try the following lines instead
      // MyClass mc = new MyClass();
      // mc.i = 10;
      // mc.f();
      // int p = mc.Prop;
   }
}

También se generará el error CS0120 si hay una llamada a un método no estático desde un método estático de la siguiente manera:

// CS0120_2.cs
// CS0120 expected
using System;

public class MyClass
{
   public static void Main()
   {
      TestCall();   // CS0120
      // To call a non-static method from Main,
      // first create an instance of the class.
      // Use the following two lines instead:
      // MyClass anInstanceofMyClass = new MyClass();
      // anInstanceofMyClass.TestCall();
   }

   public void TestCall()
   {
   }
}

Igualmente, un método no estático no puede llamar a un método de instancia a menos que se le pase explícitamente una instancia de la clase, como se indica a continuación:

// CS0120_3.cs
using System;

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

   private void do_it(string sText)
   // You could also add the keyword static to the method definition:
   // private static void do_it(string sText)
   {
      Console.WriteLine(sText);
   }
}

Vea también

Referencia

Clases y estructuras (Guía de programación de C#)