Why should the Main() method be static?

c#

Solution

You need an entry point into your program. Static means that you can call the function without having to instantiate an object/instance of a class. It's a bit "chicken and egg"... you can't instantiate an object before you're inside the program.

A static method can be called without instantiating an object. Therefore `main()` needs to be static in order to allow it to be the entry to your program.

As David says, you can just add the keyword `static` to the function definition to change it. It's worth looking into static (class) methods vs instance methods, and knowing the difference can be useful at times.

Problem

I tried to create `public void Main()` in C#; it says no static void Main found. What exactly does it mean for `Main` to be static? I know the code works fine for `public static void Main()`. But why does `Main` have to be `static`?

Original source

Related problems