Main() und Befehlszeilenargumente (C#-Programmierhandbuch)Main() and command-line arguments (C# Programming Guide)

Die Main-Methode ist der Einstiegspunkt einer C#-Anwendung.The Main method is the entry point of a C# application. (Bibliotheken und Dienste erfordern keine Main-Methode als Einstiegspunkt.) Wenn die Anwendung gestartet wird, ist die Main-Methode die erste Methode, die aufgerufen wird.(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 einem C#-Programm kann nur ein Einstiegspunkt vorhanden sein.There can only be one entry point in a C# program. Wenn Sie mehr als eine Klasse mit einer Main-Methode aufweisen, müssen Sie das Programm mit der /main-Compileroption kompilieren, um anzugeben, welche Main-Methode als Einstiegspunkt verwendet wird.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. Weitere Informationen hierzu finden Sie unter /main (C# Compiler Options).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);
    }
}

ÜbersichtOverview

  • Die Main-Methode ist der Einstiegspunkt eines ausführbaren Programms. Hier beginnt und endet die Programmsteuerung.The Main method is the entry point of an executable program; it is where the program control starts and ends.
  • Main wird innerhalb einer Klasse oder Struktur deklariert.Main is declared inside a class or struct. Main muss statisch, aber nicht öffentlich sein.Main must be static and it need not be public. (Im Beispiel oben erhält es den Standardzugriff private.) Die einschließende Klasse oder Struktur muss nicht statisch sein.(In the earlier example, it receives the default access of private.) The enclosing class or struct is not required to be static.
  • Main kann über die Rückgabetypen void oder int verfügen; seit C# 7.1 sind auch die Rückgabetypen Task oder Task<int> möglich.Main can either have a void, int, or, starting with C# 7.1, Task, or Task<int> return type.
  • Wenn – und nur wenn – Main einen Task- oder Task<int>-Wert zurückgibt, darf die Deklaration von Main den async-Modifizierer enthalten.If and only if Main returns a Task or Task<int>, the declaration of Main may include the async modifier. Beachten Sie, dass diese insbesondere eine async void Main-Methode ausschließt.Note that this specifically excludes an async void Main method.
  • Die Main-Methode kann mit oder ohne string[]-Parameter deklariert werden, der die Befehlszeilenargumente enthält.The Main method can be declared with or without a string[] parameter that contains command-line arguments. Bei Verwendung von Visual StudioVisual Studio zum Erstellen von Windows-Anwendungen können Sie den Parameter manuell hinzufügen oder die Environment-Klasse verwenden, um die Befehlszeilenargumente abzurufen.When using Visual StudioVisual Studio to create Windows applications, you can add the parameter manually or else use the Environment class to obtain the command-line arguments. Parameter werden als mit Null indizierte Befehlszeilenargumente gelesen.Parameters are read as zero-indexed command-line arguments. Im Gegensatz zu C und C++ wird der Name des Programms nicht als erstes Befehlszeilenargument behandelt.Unlike C and C++, the name of the program is not treated as the first command-line argument.

Das Hinzufügen der async-Rückgabetypen Task und Task<int> vereinfacht den Programmcode, wenn Konsolenanwendungen asynchrone Vorgänge in Main starten und mit await darauf warten müssen.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.

C#-SprachspezifikationC# language specification

Weitere Informationen erhalten Sie unter C#-Sprachspezifikation. Die Sprachspezifikation ist die verbindliche Quelle für die Syntax und Verwendung von C#.

Siehe auchSee also

Erstellen über die Befehlszeile mit „csc.exe“ C#-Programmierhandbuch Methoden In einem C#-ProgrammCommand-line Building With csc.exe C# Programming Guide Methods Inside a C# Program