Main() and Command-Line Arguments (C# Programming Guide)

The Main method is the entry point of a C# console application or windows application. (Libraries and services do not require a Main method as an entry point.). When the application is started, the Main method is the first method that is invoked.

There can only be one entry point in a C# program. If you have more than one class that has a Main method, you must compile your program with the /main compiler option to specify which Main method to use as the entry point. For more information, see /main (C# Compiler Options).

class TestClass
    static void Main(string[] args)
        // Display the number of command line arguments:


  • The Main method is the entry point of an .exe program; it is where the program control starts and ends.

  • Main is declared inside a class or struct. Main must be static and it should not be public. (In the earlier example, it receives the default access of private.) The enclosing class or struct is not required to be static.

  • Main can either have a void or int return type.

  • The Main method can be declared with or without a string[] parameter that contains command-line arguments. When using Visual Studio to create Windows Forms applications, you can add the parameter manually or else use the Environment class to obtain the command-line arguments. Parameters are read as zero-indexed command-line arguments.¬†Unlike C and C++, the name of the program is not treated as the first command-line argument.

In This Section

C# Language Specification

For more information, see the C# Language Specification. The language specification is the definitive source for C# syntax and usage.

See Also


C# Sample Applications


Methods (C# Programming Guide)

Inside a C# Program


Command-line Building With csc.exe

C# Programming Guide