Main() und Befehlszeilenargumente (C#-Programmierhandbuch)

Die Main-Methode ist der Einstiegspunkt einer C#-Anwendung. (Bibliotheken und Dienste erfordern keine Main-Methode als Einstiegspunkt.) Wenn die Anwendung gestartet wird, ist die Main-Methode die erste Methode, die aufgerufen wird.

In einem C#-Programm kann nur ein Einstiegspunkt vorhanden sein. 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. Weitere Informationen hierzu finden Sie unter /main (C# Compiler Options).

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

Übersicht

  • Die Main-Methode ist der Einstiegspunkt eines ausführbaren Programms. Hier beginnt und endet die Programmsteuerung.
  • Main wird innerhalb einer Klasse oder Struktur deklariert. Main muss statisch, aber nicht öffentlich sein. (Im Beispiel oben erhält es den Standardzugriff private.) Die einschließende Klasse oder Struktur muss nicht statisch sein.
  • 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.
  • Wenn – und nur wenn – Main einen Task- oder Task<int>-Wert zurückgibt, darf die Deklaration von Main den async-Modifizierer enthalten. Beachten Sie, dass diese insbesondere eine async void Main-Methode ausschließt.
  • Die Main-Methode kann mit oder ohne string[]-Parameter deklariert werden, der die Befehlszeilenargumente enthält. Bei Verwendung von Visual Studio zum Erstellen von Windows-Anwendungen können Sie den Parameter manuell hinzufügen oder die Environment-Klasse verwenden, um die Befehlszeilenargumente abzurufen. Parameter werden als mit Null indizierte Befehlszeilenargumente gelesen. Im Gegensatz zu C und C++ wird der Name des Programms nicht als erstes Befehlszeilenargument behandelt.

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.

C#-Sprachspezifikation

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

Siehe auch

Erstellen über die Befehlszeile mit „csc.exe“ C#-Programmierhandbuch Methoden In einem C#-Programm