Main() y argumentos de la línea de comandos (Guía de programación de C#)Main() and command-line arguments (C# Programming Guide)

El método Main es el punto de entrada de una aplicación de C#The Main method is the entry point of a C# application. (las bibliotecas y los servicios no requieren un método Main como punto de entrada). Cuando se inicia la aplicación, el método Main es el primero que se invoca.(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.

Solo puede haber un punto de entrada en un programa de C#.There can only be one entry point in a C# program. Si hay más de una clase que tiene un método Main, debe compilar el programa con la opción del compilador /main para especificar qué método Main desea utilizar como punto 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 obtener más información, consulte /main (Opciones del compilador de 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);
    }
}

Información generalOverview

  • El método Main es el punto de entrada de un programa ejecutable; es donde se inicia y finaliza el control del programa.The Main method is the entry point of an executable program; it is where the program control starts and ends.
  • Main se declara dentro de una clase o estructura.Main is declared inside a class or struct. El valor de Main debe ser estático y no público.Main must be static and it need not be public. (En el ejemplo anterior, recibe el acceso predeterminado de privado). La clase o estructura envolvente no debe 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.
  • Main puede tener un tipo de valor devuelto void, int o, a partir de C# 7.1, Task o Task<int>.Main can either have a void, int, or, starting with C# 7.1, Task, or Task<int> return type.
  • Solo si Main devuelve un tipo de valor devuelto Task o Task<int>, la declaración de Main puede incluir el modificador async,If and only if Main returns a Task or Task<int>, the declaration of Main may include the async modifier. pero tenga en cuenta que se excluirá de forma específica un método async void Main.Note that this specifically excludes an async void Main method.
  • El método Main se puede declarar con o sin un parámetro string[] que contiene los argumentos de línea de comandos.The Main method can be declared with or without a string[] parameter that contains command-line arguments. Al usar Visual Studio para crear aplicaciones de Windows, se puede agregar el parámetro manualmente o usar la clase Environment con el fin de obtener los argumentos de la línea de comandos.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. Los parámetros se leen como argumentos de línea de comandos indizados con cero.Parameters are read as zero-indexed command-line arguments. A diferencia de C y C++, el nombre del programa no se trata como el primer argumento de línea de comandos.Unlike C and C++, the name of the program is not treated as the first command-line argument.

Al agregar los tipos de valor devuelto async, Task y Task<int>, se simplifica el código de programa cuando las aplicaciones de consola tienen que realizar tareas de inicio y await de operaciones asincrónicas en 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.

especificación del lenguaje C#C# language specification

Para obtener más información, consulte la Especificación del lenguaje C#.For more information, see the C# Language Specification. La especificación del lenguaje es la fuente definitiva de la sintaxis y el uso de C#.The language specification is the definitive source for C# syntax and usage.

Vea tambiénSee also