如果我在C#中的Main方法是私有的,为什么我的程序会工作?

默认情况下,类中每个成员的类型修饰符都是私有的,即使Main()函数类型修饰符是私有的。 CLR如何调用外部世界不可见的主要方法?

这不是真的。

它必须是公开的。 例如public static void Main()

编辑:这是我今天发现和学到的 ,为什么Main不需要publichttp://social.msdn.microsoft.com/forums/en-US/csharpgeneral/thread/9184c55b-4629-4fbf-ad77-2e96eadc4d62/

CLR不关心main的可访问性。 “对外界可见”仅适用于代码 ,而不适用于运行时

尝试在代码上使用ildasm并查找main方法

 .method private hidebysig static void Main(string[] args) cil managed { .entrypoint // this is something the CLR is interested in 

你是对的,

它被标记为入口点。 检查这个问题: 为什么Main方法是私有的?