Befehlszeilenargumente (C#-Programmierhandbuch)

Die Main-Methode kann Argumente verwenden, wobei sie eines der folgenden Formate annimmt:

static int Main(string[] args)
static void Main(string[] args)

Tipp

Um in der Main-Methode in einer Windows Forms-Anwendung Befehlszeilenargumente zu aktivieren, müssen Sie die Signatur von Main in program.cs manuell ändern. Im vom Windows Forms-Designer generierten Code wird ein Main ohne einen Eingabeparameter erstellt. Sie können auch Environment.CommandLine oder Environment.GetCommandLineArgs verwenden, um von einem beliebigen Punkt in einer Konsolen- oder Windows-Anwendung auf die Befehlszeilenargumente zuzugreifen.

Der Parameter der Main-Methode ist ein String-Array, das die Befehlszeilenargumente darstellt. Normalerweise bestimmen Sie, ob Argumente vorhanden sind, indem Sie z. B. die Length-Eigenschaft testen:

if (args.Length == 0)
{
    System.Console.WriteLine("Please enter a numeric argument.");
    return 1;
}

Sie können die Zeichenfolgenargumente auch mit der Convert-Klasse oder der Parse-Methode in numerische Typen konvertieren. Die folgende Anweisung konvertiert z. B. string mithilfe der Parse-Methode in eine long-Zahl:

long num = Int64.Parse(args[0]);

Sie können auch den C#-Typ long verwenden, der als Alias für Int64 fungiert:

long num = long.Parse(args[0]);

Sie können für dieselbe Aufgabe auch die Convert-Klassenmethode ToInt64 verwenden:

long num = Convert.ToInt64(s);

Weitere Informationen finden Sie unter Parse und Convert.

Beispiel

Im folgenden Beispiel wird gezeigt, wie Befehlszeilenargumente in einer Konsolenanwendung verwendet werden. Das Programm übernimmt zur Laufzeit ein Argument, konvertiert das Argument in eine ganze Zahl und berechnet die Fakultät der Zahl. Wenn keine Argumente übergeben werden, erzeugt das Programm eine Meldung, in der die richtige Verwendung des Programms erläutert wird.

Tipp

Wenn Sie eine Anwendung in Visual Studio ausführen, können Sie Befehlszeilenargumente im Seite "Debuggen", Projekt-Designer angeben.

Weitere Beispiele über die Verwendung von Befehlszeilenargumenten finden Sie unter Gewusst wie: Erstellen und Verwenden von Assemblys über die Befehlszeile (C# und Visual Basic).

public class Functions
{
    public static long Factorial(int n)
    {
        // Test for invalid input
        if ((n < 0) || (n > 20))
        {
            return -1;
        }

        // Calculate the factorial iteratively rather than recursively:
        long tempResult = 1;
        for (int i = 1; i <= n; i++)
        {
            tempResult *= i;
        }
        return tempResult;
    }
}

class MainClass
{
    static int Main(string[] args)
    {
        // Test if input arguments were supplied:
        if (args.Length == 0)
        {
            System.Console.WriteLine("Please enter a numeric argument.");
            System.Console.WriteLine("Usage: Factorial <num>");
            return 1;
        }

        // Try to convert the input arguments to numbers. This will throw
        // an exception if the argument is not a number.
        // num = int.Parse(args[0]);
        int num;
        bool test = int.TryParse(args[0], out num);
        if (test == false)
        {
            System.Console.WriteLine("Please enter a numeric argument.");
            System.Console.WriteLine("Usage: Factorial <num>");
            return 1;
        }

        // Calculate factorial.
        long result = Functions.Factorial(num);

        // Print result.
        if (result == -1)
            System.Console.WriteLine("Input must be >= 0 and <= 20.");
        else
            System.Console.WriteLine("The Factorial of {0} is {1}.", num, result);

        return 0;
    }
}
// If 3 is entered on command line, the
// output reads: The factorial of 3 is 6.

Siehe auch

Aufgaben

Gewusst wie: Anzeigen von Befehlszeilenargumenten (C#-Programmierhandbuch)

Gewusst wie: Zugreifen auf Befehlszeilenargumente mithilfe von foreach (C#-Programmierhandbuch)

Referenz

Main()-Rückgabewerte (C#-Programmierhandbuch)

Klassen (C#-Programmierhandbuch)

System.Environment

Konzepte

C#-Programmierhandbuch

Main() und Befehlszeilenargumente (C#-Programmierhandbuch)