/ / Was ist der Unterschied zwischen (string [] args) und System.Environment.CommandLine? - .net, Parameter, Befehlszeilenargumente

Was ist der Unterschied zwischen (string [] args) und System.Environment.CommandLine? - .net, Parameter, Befehlszeilenargumente

Ich übernehme die Wartung für mehrere Konsolenanwendungen, die natürlich mit eingegeben werden static void Main(string[] args). Der Code ignoriert jedoch die args Array und liest stattdessen die Befehlszeilenparameter aus System.Environment.CommandLine.

Gibt es hier einen funktionalen Unterschied?

Der Inhalt sieht identisch aus. Wenn überhaupt, würde ich einen winzigen Leistungseinbruch durch Aufrufen vermuten System.Environment.CommandLine (aber nicht genug, dass ich mir jemals Sorgen machen würde, oder es würde mich genug kümmern, um es zu messen).


UPDATE: Das habe ich vermutet System.Environment.CommandLine sollte den ausführbaren Pfad enthalten, aber ich habe ihn nicht gesehen ... weil ich an der falschen Stelle gesucht habe. Der Code hat AUCH string[] arrCmdLine = System.Environment.GetCommandLineArgs(); .... System.Environment.CommandLine.ToLower() wird auf das Vorhandensein von "debug" überprüft, während alle anderen Parameter extrahiert werden GetCommandLineArgs() und ich habe die beiden mental zusammengebracht, während ich ging "warum nicht einfach verwenden" args[]"

Jahrelang habe ich mich über die beste Methode zum Parsen von Kommandozeilenargumenten gequält, als es die ganze Zeit darum ging, "sie in die richtige Reihenfolge zu bringen"! [Jk]

Antworten:

8 für die Antwort № 1

System.Environment.CommandLine Enthält die ausführbare Datei und die Argumente als einzelne Zeichenfolge.

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

Das args Parameter ist ein Array von Argumenten. Sie können also währenddessen die einzelnen Argumente aus analysieren System.Environment.CommandLineIch bin nicht sicher, warum Sie möchten. Der einzige Grund, den ich sehen kann, ist, ob Sie auf Argumente außerhalb von zugreifen müssen Main(), was wohl sowieso eine schlechte idee ist. Ihre Main() Die Methode sollte mit Argumenten umgehen und sie bei Bedarf an den Rest der Anwendung weitergeben.