2017-07-13 1 views
-2

J'ai fait un programme pour l'analyse des arguments de ligne de commande ... Mon code:Comment vérifier si un argument spécifique existe?

for (var x = 0; x < args.Length; x++) 
     { 
      switch (args[x].Trim()) 
      { 
       case "--message": 
        if (args[x + 1] == null) // <= the problem 
        { 
         Console.WriteLine("Option {0} requires an argument.", args[x]); 
         Environment.Exit(1); 
        } 
        else 
        { 
         Console.WriteLine("Your message: " + args[x + 1]); 
         Environment.Exit(0); 
        } 
        break; 
      } 
     } 

Alors, quand je tape: « myprogram.exe --message MonMessage », le programme imprime mon message sans aucune erreur. Mais mon problème est: Si aucun message n'est spécifié: 'myprogram.exe --message', il se bloque car args [x + 1] n'existe pas. Comment puis-je vérifier si args [x + 1] existe?

PS: Merci pour la critique!

Merci pour vos réponses! -AppPrinter

+0

'' 'if (args.length> x + 1) {exists}' '' – tym32167

+0

@ tym32167 Wow je vous remercie pour la réponse rapide;) Mais je devais écrivez '<=' au lieu de '<' – AppPrinter

Répondre

0

Remplacer

if (args[x + 1] == null) 

avec

if (args.Length <= x + 1 && args[x + 1] == null) 

pour vérifier si vous avez au moins x + 1 articles dans votre args. Juste une idée: il existe plusieurs frameworks pour analyser les paramètres de la ligne de commande. Vous n'avez pas à écrire votre propre logique;)

+0

Merci! Mais j'ai déjà ma soloution: if (args.Length <= x + 1) {...} – AppPrinter