2012-06-14 5 views
5

Ich erben Wartung auf mehreren Konsolenanwendung, die natürlich mit static void Main(string[] args) eingegeben werden. Der Code ignoriert jedoch das Array args und liest stattdessen die Befehlszeilenparameter aus System.Environment.CommandLine.Was ist der Unterschied zwischen (string [] args) und System.Environment.CommandLine?

Gibt es hier einen funktionalen Unterschied?

Der Inhalt sieht identisch aus. Wenn überhaupt, würde ich einen winzigen Leistungseinbruch vermuten, indem ich System.Environment.CommandLine anrufe (aber nicht genug, dass ich jemals besorgt oder vorsichtig genug wäre, um zu messen).


UPDATE: Ich vermuten, dass System.Environment.CommandLine den ausführbaren Pfad enthalten soll, aber ich sah es nicht ..., weil ich an der falschen Stelle suchen. Der Code ALSO hat string[] arrCmdLine = System.Environment.GetCommandLineArgs(); .... System.Environment.CommandLine.ToLower() ist auf das Vorhandensein von "Debug" überprüft, während alle anderen Parameter aus extrahiert werden und ich mental die beiden zusammenzufliessen, während ich ging "warum nicht einfach args[] verwenden?"

Seit Jahren habe ich mich über den besten Weg gequält, Kommandozeilenargumente zu parsen, wenn sie die ganze Zeit "in die richtige Reihenfolge gebracht" haben! [jk]

Antwort

7

System.Environment.CommandLine enthält die ausführbare Datei und Argumente als eine 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

args Der Parameter ist ein Array von Argumenten. Also, während Sie die einzelnen Argumente von System.Environment.CommandLine analysieren können, bin ich nicht sicher, warum Sie möchten. Der einzige Grund, den ich sehen kann, ist, wenn Sie auf Argumente außerhalb von Main() zugreifen müssen, was sowieso eine schlechte Idee ist. Ihre Main()-Methode sollte mit Argumenten umgehen und sie bei Bedarf im Rest der Anwendung weitergeben.

Verwandte Themen