En términos más básicos, se puede imaginar que el mensaje dice:
Su clase 'Programa' solo parece contener métodos que se declaran como estáticos y, como resultado, no puede participar en una jerarquía de herencia. Declararlo como estático (o sellado si está apuntando a una versión antigua de .net que no admite clases estáticas) para reflejar con mayor precisión cuál es su sentimiento de diseño
Es una recomendación marcar su clase como estática porque solo contiene material estático. Esto evitará que cualquiera cometa el error de intentar heredar de él y piense que puede hacer algo útil en cuanto a herencia con la versión heredada
Microsoft no lo marca como estático para usted porque no hay nada especial en el Programa per se; podría poner métodos no estáticos en él, o podría poner su static void Main
en otra clase, como Persona, que ES instanciable.
class Person{
public string Name {get;set;}
static void Main(){
Person p = new Person();
p.Name = Console.ReadLine();
}
}
Esto funcionaría bien; una clase no tiene que ser estática para alojar el punto de entrada de la aplicación y, en este caso, la clase no podría ser estática porque tiene miembros no estáticos. Puede ser (y es, en lo principal) instanciado en lo principal. No se llama programa; no hay una clase llamada Programa en ningún lado y esta pequeña aplicación aún se ejecutará (no hace mucho ...)
En su caso, haga lo recomendado y agregue un modificador estático a su clase, ya que hará que su programa tenga un diseño más robusto o agregue un miembro de instancia si puede pensar en una razón válida para crear instancias del Programa o ignore el mensaje y continúe con su clase no estática que contiene solo métodos estáticos: seguirá funcionando