方法 Main 的访问修饰符是否重要?

8

对于方法Main,可用的访问修饰符是否重要?如果不重要,为什么Main允许我们指定修饰符?编译器为什么不阻止我们指定一些微不足道的修饰符?


6
主函数必须是静态的并且不应该是公共的。 - Oded
1
静态修饰符意味着不必实例化即可使用它。在程序运行之前,技术上还没有创建任何对象,因此应用程序的入口点——主方法必须标记为静态,以告诉编译器该方法可以在创建该类的实例之前使用。否则,就会出现“先有鸡还是先有蛋”的现象。 - John Woo
换句话说,如果访问修饰符实际上并不重要,为什么他们会阻止您在入口点上使用它们?但它确实很重要-您也可以像调用普通方法一样调用它(在我看来这是一个大的WTF,但您可以)。此外,入口点不一定要称为Main。 - harold
@Oded,实际上你的引用有误。你的链接目前显示这个短语:“Main必须是静态的,但不需要是公共的。”在CS文档和常见英语中,“should not”和“need not”之间有很大的区别。 - user719662
1
@vax 猜测自从我写下那句话后的5年间已经发生了变化。 - Oded
显示剩余4条评论
1个回答

6

主函数是公共或私有的并不会影响CLR对其的调用。

CLR将查找与其入口点关联的静态方法命名为Main(默认情况下,但不一定),而不考虑访问修饰符。

它只影响其他函数对Main的可见性。良好的实践是Main不应该是public,因为它不会被您程序集中的其他方法调用,而只会被CLR调用。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接