创建新的 ASP.NET Core 3 项目后,我在 Visual Studio 2019 中收到以下警告:
警告 CA1052
类型“Program”是静态持有者类型,但既不是静态的也不是不可继承的
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) =>
// ...
}
我应该添加 static 修饰符吗?为什么/为什么不?优点和缺点?
编辑:这是 ASP.NET Core 3API
用更基本的术语来说,该消息可以想象为:
您的类“程序”似乎只包含声明为静态的方法,因此它不能参与继承层次结构。将其声明为静态(如果您的目标是不支持静态类的旧版 .net,则将其声明为密封)以更准确地反映其设计情感
建议将您的类标记为静态,因为它只包含静态内容。这将防止任何人犯下尝试继承它的错误,并认为他们可以使用继承的版本做一些有用的继承明智的事情
Microsoft 不会为您将其标记为静态,因为 Program 本身没有什么特别之处;您可以将非静态方法放入其中,或者您可以将您的static void Main
在另一个类中,例如 Person,它是可实例化的。
class Person{
public string Name {get;set;}
static void Main(){
Person p = new Person();
p.Name = Console.ReadLine();
}
}
这会工作得很好;类不必是静态的来托管应用程序入口点,在这种情况下,该类不能是静态的,因为它具有非静态成员。它可以(并且主要是)在 main 中实例化。它不叫程序;它叫程序。任何地方都没有名为 Program 的类,这个小应用程序仍然会运行(没有做太多事情..)
在您的情况下,要么按照建议操作并向您的类添加静态修饰符,因为这将使您的程序设计得更加健壮,或者如果您能想到实例化程序的有效原因,则添加一个实例成员,或者忽略该消息并继续使用仅包含静态方法的非静态类 - 它仍然可以工作
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)