Main() e argomenti della riga di comando (Guida per programmatori C#)Main() and command-line arguments (C# Programming Guide)

Il metodo Main è il punto di ingresso di un'applicazione C#.The Main method is the entry point of a C# application. Le librerie e i servizi non richiedono un metodo Main come punto di ingresso. All'avvio dell'applicazione, Main è il primo metodo richiamato.(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.

In un programma C# può essere presente un solo punto di ingresso.There can only be one entry point in a C# program. Se sono presenti più classi con un metodo Main, è necessario compilare il programma con l'opzione del compilatore /main per specificare quale metodo Main deve essere usato come punto di ingresso.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. Per altre informazioni, vedere /main (Opzioni del compilatore 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);
    }
}

PanoramicaOverview

  • Il metodo Main è il punto di ingresso di un programma eseguibile, ovvero il punto in cui il controllo del programma inizia e termina.The Main method is the entry point of an executable program; it is where the program control starts and ends.
  • Main viene dichiarato in una classe o in un tipo struct.Main is declared inside a class or struct. Main deve essere static e non public.Main must be static and it need not be public. Nell'esempio precedente riceve l'accesso predefinito di private. Non è necessario che la classe o il tipo struct che lo contiene sia statico.(In the earlier example, it receives the default access of private.) The enclosing class or struct is not required to be static.
  • Il tipo restituito da Main può essere void, int o, a partire da 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.
  • Se e solo se Main restituisce Task o Task<int>, la dichiarazione di Main può includere il modificatore async.If and only if Main returns a Task or Task<int>, the declaration of Main may include the async modifier. Si noti che questo esclude specificamente un metodo async void Main.Note that this specifically excludes an async void Main method.
  • Il metodo Main può essere dichiarato con o senza un parametro string[] contenente argomenti della riga di comando.The Main method can be declared with or without a string[] parameter that contains command-line arguments. Quando si usa Visual Studio per creare applicazioni Windows, è possibile aggiungere il parametro manualmente o usare la classe Environment per ottenere gli argomenti della riga di 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. I parametri vengono letti come argomenti della riga di comando a indice zero.Parameters are read as zero-indexed command-line arguments. A differenza di quanto avviene in C e C++, il nome del programma non viene considerato il primo argomento della riga di comando.Unlike C and C++, the name of the program is not treated as the first command-line argument.

L'aggiunta dei tipi restituiti async, Task e Task<int> semplifica il codice del programma quando è necessario avviare le applicazioni console e per operazioni asincrone await in 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.

Specifiche del linguaggio C#C# language specification

Per altre informazioni, vedere la specifica del linguaggio C#.For more information, see the C# Language Specification. La specifica del linguaggio costituisce il riferimento ufficiale principale per la sintassi e l'uso di C#.The language specification is the definitive source for C# syntax and usage.

Vedere ancheSee also