Почему C # неправильно обрабатывает аргументы командной строки?

В C # при получении аргументов командной строки непосредственно из Main () имя exe опускается, что противоречит традиции C.

Получение тех же самых аргументов командной строки через Environment.GetCommandLineArgs включает его.

Is есть ли веская логическая причина, по которой мне не хватает этой очевидной несогласованности?

class Program
{
    static void Main(string[] args)
    {
        Console.WriteLine(string.Format("args.Length = {0}", args.Length));

        foreach(string arg in args)
        {
            Console.WriteLine(string.Format("args = {0}", arg));
        }

        Console.WriteLine("");

        string[] Eargs = Environment.GetCommandLineArgs();
        Console.WriteLine(string.Format("Eargs.Length = {0}", Eargs.Length));
        foreach (string arg in Eargs)
        {
            Console.WriteLine(string.Format("Eargs = {0}", arg));
        }

    }
}

Вывод:

C:\\ConsoleApplication1\ConsoleApplication1\bin\Debug>consoleapplication1 xx zz aa 
args.Length = 3 
args = xx
args = zz 
args = aa
Eargs.Length = 4 
Eargs = consoleapplication1 
Eargs = xx 
Eargs = zz 
Eargs = aa
8
задан jcolebrand 14 December 2010 в 17:03
поделиться