Как получить аргумент в консольной программе? - PullRequest
4 голосов
/ 21 мая 2010

Поэтому я хочу, чтобы другие пользователи могли запускать мою программу, отправляя аргументы. как это сделать?

Ответы [ 7 ]

8 голосов
/ 21 мая 2010

Если у вас есть метод Main (который у вас будет с приложением командной строки), вы можете получить к ним доступ непосредственно как параметр массива args.

public static void Main(string[] args) {
   var arg1 = args[0];
   var arg2 = args[1];
}

Если вы находитесь в другом месте своего кода, вы можете получить доступ к статическому методу Environment.GetCommandLineArgs

//somewhere in your code
var args = Environment.GetCommandLineArgs();
var arg1 = args[0];
var arg2 = args[1];
8 голосов
/ 21 мая 2010

Вы имеете в виду args при запуске? такие как myapp.exe blah blah2 blah3

Сделайте так, чтобы ваш основной метод выглядел так:

public static void Main(string[] args)
{

}

сейчас args - это массив аргументов, передаваемых в программу. Так, в примере, args[0] == "blah", args[1] == "blah2" и т. Д.

4 голосов
/ 21 мая 2010

Программа запускается из метода с этой подписью

public static void Main(string[] args)

Параметр args будет содержать аргументы командной строки, разделенные пробелом.

3 голосов
/ 21 мая 2010

Хотя string [] args работает просто отлично, стоит упомянуть Environment.GetCommandLineArgs .

2 голосов
/ 21 мая 2010

попробуйте это:

http://sourceforge.net/projects/csharpoptparse/

http://www.codeproject.com/KB/recipes/command_line.aspx

они в основном позволяют вам определять аргументы и анализировать их OO-способом, вместо того, чтобы выполнять множество сравнений строк и тому подобное. я использовал аналогичный для Java, и это было здорово

2 голосов
/ 21 мая 2010

Это поддерживается по умолчанию, и аргументы появятся в массиве args, переданном вашей программе.

public static void Main(string[] args)

Если вы скажете

App.exe Hello World What's Up

В командной строке вы получите массив args, подобный этому:

[0] = "Hello"
[1] = "World"
[2] = "What's"
[3] = "Up"

Вам решать, какие аргументы вы хотите, как они будут отформатированы и т. Д.

2 голосов
/ 21 мая 2010

Вы можете прочитать аргументы командной строки из Main необязательного string[] параметра:

static void Main(string[] args)
{
    if (args.Length >= 1)
    {
        string x = args[0];
        // etc...
    }
}

Обратите внимание, что следующее объявление для метода Main также допустимо, но тогда у вас нет доступа к аргументам командной строки:

static void Main()
{
    // ...
}

Подробнее см. В документации .

...