Recibo la siguiente Advertencia en Visual Studio 2019, después de crear un nuevo proyecto ASP.NET Core 3:
Advertencia CA1052 Tipo 'Programa' es un tipo de soporte estático pero no es estático ni no heredable
public class Program
{
public static void Main(string[] args)
{
// ...
}
public static IHostBuilder CreateHostBuilder(string[] args) =>
// ...
}
vs
public static class Program
{
public static void Main(string[] args)
{
// ...
}
public static IHostBuilder CreateHostBuilder(string[] args) =>
// ...
}
¿Debo agregar el modificador estático? ¿Por qué por qué no? Pros y contras'?
Editar: Esta es una API ASP.NET Core 3
c#
asp.net
asp.net-core
Nelson Sousa
fuente
fuente
Respuestas:
En términos más básicos, se puede imaginar que el mensaje dice:
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.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
fuente