为什么Main方法是私有的?

Fra*_*čik 51 .net c# methods syntax

新的控制台项目模板创建一个Main方法,如下所示:

class Program
{
    static void Main(string[] args)
    {
    }
}
Run Code Online (Sandbox Code Playgroud)

为什么Main方法和Program类都不需要公开?

dtb*_*dtb 52

程序的入口点用.entrypointIL指令标记.无论方法或类是否公开都没关系,重要的是这个指令.

  • 这也意味着你甚至不必调用main方法"Main".C#编译器强制执行该操作,但其他.net语言可以使用他们想要的任何内容. (15认同)

Joh*_*zen 24

Main任何人都不应该调用该方法.

它实际上被标记为EXE本身的执行入口点,因此默认情况下没有外部调用者.

如果您想要,可以打开它以通过标记进行调用public,例如,如果您将控制台应用程序转换为API.

  • 即使控制台程序的功能应该由其他程序集直接调用,打开`Main`通常也是一个坏主意.暴露外部程序可以调用的公共Facade是更好的设计.`Main`处理命令行参数,然后调用相同的Facade. (2认同)
  • @Anders:说得对,但我们只是在谈论可行性,而不是设计。 (2认同)