C# 没有可执行代码的顶级程序无法编译
我有一个针对net5的控制台应用程序,该应用程序中唯一的代码行是C# 没有可执行代码的顶级程序无法编译,c#,.net-5,c#-9.0,C#,.net 5,C# 9.0,我有一个针对net5的控制台应用程序,该应用程序中唯一的代码行是 System.Console.WriteLine(); 它按预期工作,但当我删除该行时,会出现一个编译错误,指出缺少一个入口点。这就是错误: 我的问题是为什么编译器的行为会有所不同。在这种情况下,为什么编译器对待顶级程序与存在静态“Main”方法的非顶级程序不同 语义 如果任何顶级语句出现在程序的任何编译单元中,其含义就好像它们组合在全局命名空间中程序类的主方法的块体中,如下所示: 您可以看到,您的语句是在隐式Main()方法中
System.Console.WriteLine();
它按预期工作,但当我删除该行时,会出现一个编译错误,指出缺少一个入口点。这就是错误:
我的问题是为什么编译器的行为会有所不同。在这种情况下,为什么编译器对待顶级程序与存在静态“Main”方法的非顶级程序不同
语义如果任何顶级语句出现在程序的任何编译单元中,其含义就好像它们组合在全局命名空间中程序类的主方法的块体中,如下所示: 您可以看到,您的语句是在隐式
Main()
方法中编译的。但要使用此Main()
方法,必须至少有一个顶级语句。仅当存在顶级语句时,才会创建此隐式语句。您建议的替代方案将导致始终生成隐式Main()
您看到的错误显然与此有关:如果没有任何代码行,则不会生成隐式Main()
方法,因此会返回一个缺少入口点的错误