Nach dem Erstellen eines neuen ASP.NET Core 3-Projekts wird in Visual Studio 2019 die folgende Warnung angezeigt:
Warnung CA1052 Typ 'Programm' ist ein statischer Haltertyp, jedoch weder statisch noch nicht vererbbar
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) =>
// ...
}
Soll ich den statischen Modifikator hinzufügen? Warum Warum nicht? Vor-und Nachteile'?
Bearbeiten: Dies ist eine ASP.NET Core 3- API
c#
asp.net
asp.net-core
Nelson Sousa
quelle
quelle
Antworten:
In grundlegenderen Begriffen könnte man sich vorstellen, dass die Botschaft sagt:
Es ist eine Empfehlung, Ihre Klasse als statisch zu markieren, da sie nur statisches Material enthält. Dies verhindert, dass jemand den Fehler macht, zu versuchen, davon zu erben, und denkt, dass er mit der geerbten Version etwas Nützliches in Bezug auf die Vererbung tun kann
Microsoft markiert es für Sie nicht als statisch, da das Programm an sich nichts Besonderes ist. Sie könnten nicht statische Methoden einfügen, oder Sie könnten Ihre
static void Main
in eine andere Klasse wie Person einfügen, die sofort instanziierbar ist.Das würde gut funktionieren; Eine Klasse muss nicht statisch sein, um den Anwendungseinstiegspunkt zu hosten. In diesem Fall kann die Klasse nicht statisch sein, da sie nicht statische Mitglieder hat. Es kann (und wird hauptsächlich) in der Hauptsache instanziiert werden. Es heißt nicht Programm; Es gibt nirgendwo eine Klasse namens Programm und diese winzige App wird immer noch ausgeführt (macht nicht viel ..)
In Ihrem Fall tun Sie entweder wie empfohlen und fügen Sie Ihrer Klasse einen statischen Modifikator hinzu, da dadurch Ihr Programm etwas robuster konstruiert wird, oder fügen Sie ein Instanzmitglied hinzu, wenn Sie sich einen gültigen Grund für die Instanziierung des Programms vorstellen können, oder ignorieren Sie die Nachricht und fahren Sie mit Ihrer nicht statischen Klasse fort, die nur statische Methoden enthält - es wird immer noch funktionieren
quelle