Main() e argumentos de linha de comando (Guia de Programação em C#)Main() and command-line arguments (C# Programming Guide)

O método Main é o ponto de entrada de um aplicativo C#.The Main method is the entry point of a C# application. (Bibliotecas e serviços não exigem um método Main como um ponto de entrada.) Quando o aplicativo é iniciado, o método Main é o primeiro método invocado.(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.

Pode haver apenas um ponto de entrada em um programa C#.There can only be one entry point in a C# program. Se tiver mais de uma classe que tenha um Main método, você deverá compilar seu programa com a opção do compilador /main para especificar qual método Main será usado como ponto de entrada.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. Para obter mais informações, consulte /main (opções do compilador C#).For more information, see /main (C# Compiler Options).

class TestClass
{
    static void Main(string[] args)
    {
        // Display the number of command line arguments:
        System.Console.WriteLine(args.Length);
    }
}

Visão geralOverview

  • O método Main é o ponto de entrada de um programa executável; é onde o controle do programa começa e termina.The Main method is the entry point of an executable program; it is where the program control starts and ends.
  • Main é declarado dentro de uma classe ou struct.Main is declared inside a class or struct. O Main deve ser estático e não precisa ser público.Main must be static and it need not be public. (No exemplo anterior, ele recebe o acesso padrão de particular.) A classe delimitadora ou struct não deve ser estático.(In the earlier example, it receives the default access of private.) The enclosing class or struct is not required to be static.
  • O Main pode ter um tipo de retorno void, int ou, a partir do C# 7.1, Task ou Task<int>.Main can either have a void, int, or, starting with C# 7.1, Task, or Task<int> return type.
  • Se e somente se Main retornar um Task ou Task<int>, a declaração de Main pode incluir o modificador async.If and only if Main returns a Task or Task<int>, the declaration of Main may include the async modifier. Observe que isso exclui especificamente um método async void Main.Note that this specifically excludes an async void Main method.
  • O método Main pode ser declarado com ou sem um parâmetro string[] que contém os argumentos de linha de comando.The Main method can be declared with or without a string[] parameter that contains command-line arguments. Ao usar o Visual Studio para criar aplicativos do Windows, você pode adicionar o parâmetro manualmente ou usar a classe Environment para obter os argumentos de linha de comando.When using Visual Studio to create Windows applications, you can add the parameter manually or else use the Environment class to obtain the command-line arguments. Os parâmetros são lidos como argumentos de linha de comando indexados por zero.Parameters are read as zero-indexed command-line arguments. Ao contrário de C e C++, o nome do programa não é tratado como o primeiro argumento de linha de comando.Unlike C and C++, the name of the program is not treated as the first command-line argument.

A adição dos tipos de retorno async, Task e Task<int> simplifica o código do programa quando os aplicativos do console precisam iniciar e realizar operações assíncronas await no Main.The addition of async and Task, Task<int> return types simplifies program code when console applications need to start and await asynchronous operations in Main.

especificação da linguagem C#C# language specification

Para obter mais informações, consulte a Especificação da linguagem C#.For more information, see the C# Language Specification. A especificação da linguagem é a fonte definitiva para a sintaxe e o uso de C#.The language specification is the definitive source for C# syntax and usage.

Consulte tambémSee Also