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
Comentarios
https://aka.ms/ContentUserFeedback.
Próximamente: A lo largo de 2024 iremos eliminando gradualmente GitHub Issues como mecanismo de comentarios sobre el contenido y lo sustituiremos por un nuevo sistema de comentarios. Para más información, vea:Enviar y ver comentarios de