static int Main(string[ ] args)
В первой форме метод Main()
возвращает значение типа void
, а во второй — целое значение, как пояснялось выше. Но в обеих формах аргументы командной строки сохраняются в виде символьных строк в массиве типа string
, который передается методу Main().
Длина этого массива (args
) должна быть равна числу аргументов командной строки, которое может быть и нулевым.
В качестве примера ниже приведена программа, выводящая все аргументы командной строки, вместе с которыми она вызывается.
// Вывести все аргументы командной строки.
using System;
class CLDemo {
static void Main(string[] args) {
Console.WriteLine("Командная строка содержит " + args.Length +
" аргумента.");
Console.WriteLine("Вот они: ");
for(int i=0; i < args.Length; i++)
Console.WriteLine(args[i]);
}
}
Если программа CLDemo
запускается из командной строки следующим образом:
CLDemo один два три
то ее выполнение дает такой результат.
Командная строка содержит 3 аргумента.
Вот они:
один
два
три
Для того чтобы стало понятнее, каким образом используются аргументы командной строки, рассмотрим еще один пример программы, в которой применяется простой подстановочный шифр для шифровки или расшифровки сообщений. Шифруемое или расшифровываемое сообщение указывается в командной строке. Применяемый шифр действует довольно просто. Для шифровки слова значение каждой его буквы инкрементируется на 1. Следовательно, Буква
// Зашифровать и расшифровать сообщение, используя
// простой подстановочный шифр.
using System;
class Cipher {
public static int Main(string[] args) {
// Проверить наличие аргументов.
if (args.Length < 2) {
Console.WriteLine("ПРИМЕНЕНИЕ: " +
"слово1: <зашифровать>/<расшифровать> " +
"[слово2... словоN]");
return 1; // возвратить код неудачного завершения программы
}
// Если аргументы присутствуют, то первым аргументом должно быть
// слово <зашифровать> или же слово <расшифровать>.
if (args[0] != "зашифровать" & args[0] != "расшифровать") {
Console.WriteLine("Первым аргументом должно быть слово "
+ "<зашифровать> или <расшифровать>.");
return 1; // возвратить код неудачного завершения программы
}
// Encode or decode message.
for (int n = 1; n < args.Length; n++) {
for (int i = 0; i < args[n].Length; i++) {
if (args[0] == "зашифровать")
Console.Write((char)(args[n][i] + 1));
else
Console.Write((char)(args[n][i] - 1));
}
Console.Write(" ");
}
Console.WriteLine();
return 0;
}
}
Для того чтобы воспользоваться этой программой, укажите в командной строке имя программы, затем командное слово "зашифровать" или "расшифровать" и далее сообщение, которое требуется зашифровать или расшифровать. Ниже приведены два примера выполнения данной программы, при условии, что она называется Cipher
.
C:\Cipher зашифровать один два
пейо егб
C:\Cipher расшифровать пейо егб
один два