Raghav55
Raghav55

Reputation: 3135

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?

Upvotes: 3

Views: 1078

Answers (4)

CloudyMarble
CloudyMarble

Reputation: 37566

You're right,

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

Upvotes: 1

V4Vendetta
V4Vendetta

Reputation: 38210

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

Upvotes: 3

shahkalpesh
shahkalpesh

Reputation: 33474

Thats not true.

It has to be public. For e.g. 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/

Upvotes: 3

user703016
user703016

Reputation: 37945

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

Upvotes: 7

Related Questions