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#)