static void Main(string[] args)
{
foreach (string s in args) Console.WriteLine(s);
}
Запустите приложение в окне командной строки:
"app.exe" "\\\\" "\'" "\\'" "\\\'"
Результат:
\\
\'
\\'
\\\'
Что такое логика c за результатом 2-4 - почему-либо 'в хвосте сделать все двойные \, прежде чем не убежал в одиночку \?
(К вашему сведению, если «нет», то должно быть четное \ или второе «сбежать слева»)
Развернуть вопрос: как обычно можно избежать любой строки затем, когда вы помещаете его в двойные кавычки в качестве параметра в командной строке:
... "..." "escaped-string" "..." ...
тогда можете гарантировать, что C# программа получит этот параметр в качестве исходной строки?
Все еще озадачен после Прочитайте это Как экранировать параметр в windows командной строке?