控制台应用程序中的多个args无法正确解析

dat*_*ore 8 .net c# console console-application command-line-arguments

容易重现,但对我来说真的很奇怪:

将以下带有3个字符串的'args'添加到VisualStudio中的命令行参数文本框中(在项目属性 - >调试 - >启动选项下):

-SourceFile:"c:\temp\file.txt" -DestinationFolder:"c:\temp\" -ArchiveFolder:"C:\temp\"
Run Code Online (Sandbox Code Playgroud)

使用这个简单的控制台应用程序进

class Program
{
    static void Main(string[] args)
    {
        foreach (string t in args)
        {
            Console.WriteLine(t);
        }
        Console.ReadKey();
    }
}
Run Code Online (Sandbox Code Playgroud)

结果:数组(args [])有2个而不是3个字符串?

[0] SourceFile:c:\temp\file.txt
[1] DestinationFolder:c:\temp" -ArchiveFolder:C:\temp"
Run Code Online (Sandbox Code Playgroud)

有人能解释我为什么会这样吗?引号引起一些奇怪的原因,引号将被.net删除,但在这里,仍有一些引用......但我看不出问题......

谢谢你的帮助!

kev*_*ner 12

你有一个\"DestinationFolder价值,其"逃逸"的报价,其中包括它在价值的文字,而不是将其与开引号配对关闭的字符串.你想要一个文字\,所以使用\\:

-SourceFile:"c:\temp\file.txt" -DestinationFolder:"c:\temp\\" -ArchiveFolder:"C:\temp\\"
Run Code Online (Sandbox Code Playgroud)

(你甚至可以在SO的突出显示引擎中看到逃脱行动)