В чем разница между (string[] args) и System.Окружающая среда.Командная линия?
Я наследую обслуживание на нескольких консольных приложениях, которые вводятся, естественно, с static void Main(string[] args)
. Однако, код игнорирует args
массив, а вместо этого считывает параметры командной строки от System.Environment.CommandLine
.
есть ли здесь функциональная разница?
содержимое выглядит идентично. Во всяком случае, я бы заподозрил минутную производительность-хит, вызвав System.Environment.CommandLine
(но недостаточно, чтобы я когда-либо был обеспокоен или заботился достаточно, чтобы мера.)
обновление: я подозревал, что System.Environment.CommandLine
должен содержать исполняемый путь, но я его не видел... потому что я искал не в том месте. Код также имеет string[] arrCmdLine = System.Environment.GetCommandLineArgs();
.... System.Environment.CommandLine.ToLower()
проверяется наличие "debug", в то время как все остальные параметры извлекаются из GetCommandLineArgs()
и я мысленно смешивал эти два, когда я собирался "почему бы просто не использовать args[]
?"
в течение многих лет я мучился над лучшим способом разбора args командной строки, когда все это время это было: "расположите их в правильном порядке!"[jk]
1 ответов
System.Environment.CommandLine
включает в себя исполняемый файл и аргументы в виде одной строки.
// 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
на args
параметр представляет собой массив аргументов. Поэтому, пока вы можете анализировать отдельные аргументы из System.Environment.CommandLine
, Я не уверен, зачем вам это нужно. Единственная причина, по которой я вижу, - если вам нужно получить доступ к аргументам вне Main()
, что, вероятно, плохая идея в любом случае. Ваш Main()
метод должен обрабатывать Аргументы и передавать их вокруг остальной части приложения по мере необходимости.