Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/326.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 访问修饰符对主方法重要吗?_C# - Fatal编程技术网

C# 访问修饰符对主方法重要吗?

C# 访问修饰符对主方法重要吗?,c#,C#,可用的访问修饰符对Main方法重要吗?如果没有,为什么Main允许我们指定修饰符?为什么编译器不阻止我们指定一些琐碎的东西呢?Main是public/private并不影响CLR调用它。 CLR将查找名为main(默认情况下,但不一定)的静态方法,该方法与其入口点关联,,而不查看访问修饰符 它只影响main对其他函数的可见性。 好的做法是让Main不公开,因为它不能被程序集中的其他方法调用,只能由CLR调用。Main必须是静态的,不应该是公开的。-来源:查找John Steeks对相关问题的答案

可用的访问修饰符对Main方法重要吗?如果没有,为什么Main允许我们指定修饰符?为什么编译器不阻止我们指定一些琐碎的东西呢?

Main是public/private并不影响CLR调用它。 CLR将查找名为main(默认情况下,但不一定)的静态方法,该方法与其入口点关联,,而不查看访问修饰符

它只影响main对其他函数的可见性。
好的做法是让Main不公开,因为它不能被程序集中的其他方法调用,只能由CLR调用。

Main必须是静态的,不应该是公开的。
-来源:查找John Steeks对相关问题的答案静态修饰符意味着使用它不必实例化。在程序运行之前,从技术上讲还没有创建对象,因此作为应用程序入口点的main方法必须标记为static,以告知编译器可以使用该方法,而无需首先创建该类的实例。否则,这就是“先来的是鸡还是先来的蛋?”的现象。问题不同,如果入口点上的访问修饰符根本不重要,为什么他们会阻止你使用它们?但它确实很重要——你也可以把它作为一个普通的方法来调用(在我看来,这是一个很大的WTF,但你可以)。此外,入口点不必称为Main。@vax猜测,自我写这篇文章以来的5年中,情况发生了变化。