/ / ¿Cuál es la diferencia entre (string [] args) y System.Environment.CommandLine? - .net, parámetros, argumentos de línea de comando

¿Cuál es la diferencia entre (string [] args) y System.Environment.CommandLine? - .net, parámetros, argumentos de línea de comando

Heredé el mantenimiento en varias aplicaciones de consola que se ingresan, naturalmente, con static void Main(string[] args). Sin embargo, el código ignora el args matriz, y en su lugar lee los parámetros de línea de comandos de System.Environment.CommandLine.

¿Hay una diferencia funcional, aquí?

Los contenidos parecen idénticos. En todo caso, sospecharía un minuto de impacto al invocar System.Environment.CommandLine (pero no lo suficiente como para que me preocupe o me preocupe lo suficiente como para medir).


ACTUALIZACIÓN: sospechaba que System.Environment.CommandLine Debería contener la ruta ejecutable, pero no la estaba viendo ... porque estaba buscando en el lugar equivocado. El código TAMBIÉN tiene string[] arrCmdLine = System.Environment.GetCommandLineArgs(); .... System.Environment.CommandLine.ToLower() se verifica la presencia de "depuración" mientras que todos los demás parámetros se extraen de GetCommandLineArgs() y estaba confundiendo mentalmente los dos mientras iba "¿por qué no usar simplemente args[]? "

Durante años he agonizado la mejor manera de analizar los argumentos de la línea de comandos, cuando todo el tiempo era "¡colóquelos en el orden correcto!" [Jk]

Respuestas

8 para la respuesta № 1

System.Environment.CommandLine Incluye el ejecutable y los argumentos como una sola cadena.

// 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

los args parámetro es una matriz de argumentos. Así que mientras puedes analizar los argumentos individuales de System.Environment.CommandLine, No estoy seguro de por qué desea hacerlo. La única razón por la que puedo ver es si necesita acceder a argumentos fuera de Main(), lo cual es probablemente una mala idea de todos modos. Tu Main() El método debe manejar los argumentos y pasarlos por el resto de la aplicación según sea necesario.