Я всегда делаю это, указав аргументы в виде пары «имя» / «значение», например,
myprogram.exe -arg1 value1 -arg2 value2
Это означает, что при разборе командной строки вы можете поместить аргумент / значениепары в Dictionary
с аргументом в качестве ключа.Тогда ваш arg("SetTime")
станет:
MessageBox.Show(dictionary["SetTime"]);
(Очевидно, вы не хотите, чтобы фактический словарь был общедоступным.)
Чтобы получить аргументы в первую очередь, вы можете использовать:
string[] args = Environment.GetCommandLineArgs();
Это вернет все аргументы, поэтому вам нужно будет проанализировать массив с шагом два (после первой проверки, что длина кратна двум + 1):
Первый элемент массива - это имя исполняемой программы - Страница MSDN - поэтому ваш цикл должен начинаться с одного:
for (int index = 1; index < args.Length; index += 2)
{
dictionary.Add(args[index], args[index+1]);
}
. Этот цикл выполняется в два этапа, как вы определяете каждыйАргумент - это пара значений: идентификатор и само фактическое значение, например,
my.exe -arg1 value1 -arg2 value2
. Затем вы можете просто увидеть, указан ли аргумент, увидев, находится ли ключ -arg1
в словаре, и затем прочитатьэто значение:
string value;
if (dictionary.TryGetValue(arg, out value))
{
// Do what ever with the value
}
Это означает, что вы можете иметь аргументы в любом порядке и опустить любые аргументы, которые вы не хотите указывать.