2017-06-23 3 views
0
static void Main(string[] args) 
     { 
      origination = args[1]; 
      desti = args[3]; 
      Console.ReadLine(); 
      string[] args1 = Environment.GetCommandLineArgs(); 
        origination = args1[1]; 
        desti = args1[3]; 
} 

ich Problem habe erstes Mal, dass ich Recht Wert von Befehlsargument bin immer aber wenn ich neue Werte bewerbe auf Eingabeaufforderung args es keinen neuen Wert zu aktualisieren seine immer Altwert Rückkehr Ich brauche Hilfe Wie erhält man den neuesten Wert, wenn Benutzer neue Befehlsargumente hinzufügen?Befehlszeilenargument Ausgabe

+0

Was meinst du damit, neue Befehlsargumente hinzuzufügen? Die Befehlsargumente werden nur übergeben, wenn der Befehl aufgerufen wird. sie können nicht später geändert werden – Rob

+0

so was andere Option ist, wenn ich Standardargumente anwende, indem ich Projekt -> Eigenschaften -> Fehlersuche einstelle, bekomme ich Standardresultat, aber jetzt will ich Änderungen hinzufügen oder überschreibe diese Standardargumente, um neues Ergebnis zu erhalten Wie überschreiben? – cshah

+0

Auch wenn ich im Debug-Modus läuft seine gibt mir Ergebnis basierend auf Standard-args-Wert, aber wenn ich search.exe dann drücken Sie geben Sie nichts comming an der Eingabeaufforderung – cshah

Antwort

0

Das ist, weil Environment.GetCommandLineArgs() die Argumente übernimmt, die an den Prozess zum Zeitpunkt des Aufrufs übergeben wurden. Sie lesen sie tatsächlich neu, und der Text, den Sie eingeben sollen, geht einfach nicht weiter. Was Sie brauchen, ist

string newArg = Console.ReadLine(); 
string[] newArgs = Regex.Split(newArg, " "); 

wo Regex ist ein System.Text.RegularExpressions Namespace-Methode.

+2

warum überhaupt die Regex-Klasse verwenden? warum nicht einfach die String.split-Methode verwenden? string [] zerlegt = newArg.split (''); –

+0

@ jαsοη eigentlich hast du recht, am einfachsten. –

Verwandte Themen