В чем разница между (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() метод должен обрабатывать Аргументы и передавать их вокруг остальной части приложения по мере необходимости.