在C#控制台应用程序中,public static void Main()和private static void Main()有什么区别?

jai*_*jai 48 c# console-application

有什么区别

public static void Main()
Run Code Online (Sandbox Code Playgroud)

private static void Main()
Run Code Online (Sandbox Code Playgroud)

在C#控制台应用程序中?具体而言,因为它涉及到Main()方法(I明白之间的差异publicprivate).

Erg*_*wun 62

要充当应用程序的起点,Main不需要使用该方法public.

如果您决定创建它public,则可以从其他类或程序集中调用它.通常你不需要这样做,所以你可以保留它private.

制作它的一个可能用例public是允许自动化测试调用它.

  • 旁注:创建一个空的控制台应用程序将导致`class Program`,它默认为内部类可见性.因此除了"主要"方法之外,即使是班级也不需要公开. (2认同)

Zah*_*med 22

两者之间的区别是唯一的区别在于publicprivate访问修饰符,因为两者都是有效的.它完全取决于应用程序的使用情况.

如果您想通过任何外部程序启动入口点(即用作API,用于测试目的),那么您可能需要将其公开以便可访问.

上市

如果您知道应用程序没有外部使用,那么最好将其设置为私有,以便外部应用程序无法访问它.

私人的

  • 看到这里[反射打破了私有方法的想法,因为私有方法可以在类之外访问吗?](http://stackoverflow.com/a/3304350/821057) (9认同)
  • @SarpKaya重点是`private`告诉你它不适合你/你不应该叫它.通过像Reflection这样的后门可能不会改变这一点. (9认同)
  • @SarpKaya:封装!=安全. (5认同)
  • -1通过使用反射,您可以轻松获取其他类的私有方法和字段. (2认同)

See*_*ain 11

在大多数情况下,它没有任何区别.微软主张将Main设为私有.

这样做的唯一真正价值(据我所知)是它将阻止Main方法被另一个应用程序的代码库直接调用.

它的一个很好的讨论,请点击这里


Mar*_*ill 6

除了普通的公共和私人访问修饰符功能,没有.两者都是有效的切入点.

请参阅:为什么允许入口点是私有的?为什么Main方法私有?


归档时间:

查看次数:

25382 次

最近记录:

10 年,1 月 前