Argomenti della riga di comando (Guida per programmatori C#)

Per il metodo Main è possibile specificare degli argomenti. In tal caso, il metodo assume una delle seguenti forme:

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

[!NOTA]

Per attivare gli argomenti della riga di comando nel metodo Main in un'applicazione Windows Form, è necessario modificare manualmente la firma di Main in program.cs.Il codice generato in Progettazione Windows Form crea un oggetto Main senza un parametro di input.È possibile utilizzare anche Environment.CommandLine o Environment.GetCommandLineArgs per accedere agli argomenti della riga di comando da qualsiasi punto in una console o un'applicazione Windows.

Il parametro del metodo Main è una matrice String che rappresenta gli argomenti della riga di comando.Generalmente si determina se gli argomenti esistono eseguendo il test della proprietà Length, ad esempio:

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

È anche possibile convertire gli argomenti di tipo stringa in tipi numerici utilizzando la classe Convert o il metodo Parse.L'istruzione seguente, ad esempio, converte string in un numero long tramite il metodo Parse:

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

È anche possibile utilizzare il tipo long di C#, che rappresenta l'alias per Int64:

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

In alternativa, è possibile effettuare tale operazione utilizzando il metodo ToInt64 della classe Convert:

long num = Convert.ToInt64(s);

Per ulteriori informazioni, vedere Parse e Convert.

Esempio

Nell'esempio seguente viene illustrato come utilizzare gli argomenti della riga di comando in un'applicazione console.Il programma accetta un argomento in fase di esecuzione, lo converte in un numero intero e calcola il fattoriale del numero.Se non viene fornito alcun argomento, il programma visualizza un messaggio in cui viene spiegato l'utilizzo corretto del programma.

[!NOTA]

Quando si esegue un'applicazione in Visual Studio, è possibile specificare gli argomenti della riga di comando nella Pagina Debug, Progettazione progetti.

Per ulteriori esempi sulle modalità di utilizzo degli argomenti della riga di comando, vedere Procedura: creare e utilizzare assembly dalla riga di comando (C# e 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.

Vedere anche

Attività

Procedura: visualizzare gli argomenti della riga di comando (Guida per programmatori C#)

Procedura: accedere agli argomenti della riga di comando utilizzando foreach (Guida per programmatori C#)

Riferimenti

Valori restituiti da Main() (Guida per programmatori C#)

Classi (Guida per programmatori C#)

System.Environment

Concetti

Guida per programmatori C#

Main() e argomenti della riga di comando (Guida per programmatori C#)