/ / Qual è la differenza tra (string [] args) e System.Environment.CommandLine? - .net, parametri, argomenti della riga di comando

Qual è la differenza tra (string [] args) e System.Environment.CommandLine? - .net, parametri, argomenti della riga di comando

Sto ereditando la manutenzione su diverse applicazioni console che sono state immesse, naturalmente, con static void Main(string[] args). Tuttavia, il codice ignora il args array e legge invece i parametri della riga di comando da System.Environment.CommandLine.

C'è una differenza funzionale, qui?

I contenuti sembrano identici. Semmai, sospetterei un piccolo colpo di scena invocando System.Environment.CommandLine (ma non abbastanza da farmi preoccupare o preoccuparmi abbastanza da misurare).


AGGIORNAMENTO: lo sospettavo System.Environment.CommandLine dovrebbe contenere il percorso eseguibile, ma non lo vedevo ... perché stavo cercando nel posto sbagliato. Il codice ha ANCHE string[] arrCmdLine = System.Environment.GetCommandLineArgs(); .... System.Environment.CommandLine.ToLower() viene verificato la presenza di "debug" mentre tutti gli altri parametri vengono estratti GetCommandLineArgs() e stavo confondendo mentalmente i due mentre stavo andando "perché non semplicemente usare args[]?"

Per anni "mi sono angustiato per il modo migliore di analizzare gli argomenti della riga di comando, quando da sempre è stato" posizionarli nell'ordine corretto! "[Jk]

risposte:

8 per risposta № 1

System.Environment.CommandLine include l'eseguibile e gli argomenti come una singola stringa.

// Sample for the Environment.CommandLine property.
using System;

class Sample
{
public static void Main()
{
Console.WriteLine();
//  Invoke this sample with an arbitrary set of command line arguments.
Console.WriteLine("CommandLine: {0}", Environment.CommandLine);
}
}
/*
This example produces the following results:

C:>env0 ARBITRARY TEXT

CommandLine: env0 ARBITRARY TEXT
*/

http://msdn.microsoft.com/en-us/library/system.environment.commandline.aspx

Il args Il parametro è un array di argomenti. Quindi, mentre puoi analizzare i singoli argomenti da System.Environment.CommandLine, Non sono sicuro del motivo per cui vorresti. L'unica ragione che posso vedere è se hai bisogno di accedere ad argomenti al di fuori di Main(), che probabilmente è comunque una cattiva idea. Il tuo Main() Il metodo dovrebbe gestire gli argomenti e passarli nel resto dell'applicazione, se necessario.