Создайте консольное приложение с Visual Studio 2013 Community Edition. Напишите одну строку кода в методе Main. Вызовите программу из командной строки.
static void Main(string[] args)
{
Console.WriteLine(args.Length);
Вызовите программу с двумя аргументами. В Windows 10 он печатает 1.
"C:\Users\MacGyver\Documents\Visual Studio 2013\Projects\ArgsProblem\ArgsProblem\bin\Debug\ArgsProblem.exe" "C:\" a2
РЕДАКТИРОВАТЬ:
Оказывается, длина равна 1, если первый параметр находится в кавычках, а последний символ в строке — \
. Это приводит к тому, что длина аргументов равна 1. Почему это так? Я понимаю, что \"
означает кавычку в строке C#, но для того, чтобы сделать консольное приложение интуитивно понятным, лучше исправить ошибку внутри вашего кода, вместо того, чтобы заставлять конечного пользователя не забывать ставить дополнительные \
перед \"
, чтобы правильно избежать обратной косой черты в утилите командной строки.
Сломанный (args.Length = 1):
"C:\Users\MacGyver\Documents\Visual Studio 2013\Projects\ArgsProblem\ArgsProblem\bin\Debug\ArgsProblem.exe" "C:\" a2
Не сломан (args.Length = 2):
"C:\Users\MacGyver\Documents\Visual Studio 2013\Projects\ArgsProblem\ArgsProblem\bin\Debug\ArgsProblem.exe" "C:" a2