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 № 1System.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.