简体   繁体   中英

Why does my program work if my Main method in C# is private?

By default the type modifier for every member in a class is a private, even the Main() function type modifier is private. How does the CLR call the main method which is not visible to the outside world?

The CLR does not care about the accessibility of main . "Visible to the outside world" only applies to the code , not the runtime .

Thats not true.

It has to be public. For eg public static void Main() .

EDIT: Here is what I found & learned today, on why Main need not be public . http://social.msdn.microsoft.com/forums/en-US/csharpgeneral/thread/9184c55b-4629-4fbf-ad77-2e96eadc4d62/

Try using ildasm on your code and lookout for the main method

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

You're right,

it's marked as an entrypoint. Check this question: Why is Main method private?

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM