在 C# Main 方法中究竟是如何string[] args
填充的?
例如,空白是否被剥离?是否有任何元素曾经为空字符串或 null?单引号和双引号是如何处理的?
MSDN 没有解释如何,只是说
Main 方法的参数是一个字符串数组,表示命令行参数
在 C# Main 方法中究竟是如何string[] args
填充的?
例如,空白是否被剥离?是否有任何元素曾经为空字符串或 null?单引号和双引号是如何处理的?
MSDN 没有解释如何,只是说
Main 方法的参数是一个字符串数组,表示命令行参数
当你启动一个进程时,你可以传递一个字符串作为你的参数。如何安排和拆分这些完全取决于您。
因此,如果使用 Windows 命令行,则运行:
myexe.exe "Hello World" Joe Bloggs
您的数组将包含:
{"Hello World", "Joe", "Bloggs"}
但它只是以这种特定方式拆分(注意 Hello World 周围的引号被删除),因为 .Net 框架会自动为您解析它。
我相信给 Main 的参数是Environment.GetCommandLineArgs()在删除列表的第一个后返回的参数。MSDN 描述了关于反斜杠的异常复杂的逻辑:
命令行参数由空格分隔。您可以使用双引号 (") 在参数中包含空格。但是,单引号 (') 不提供此功能。
如果双引号跟在两个或偶数个反斜杠之后,则将前面的每个反斜杠对替换为一个反斜杠并删除双引号。如果双引号后面有奇数个反斜杠,包括一个,则前面的每一对都被一个反斜杠替换,其余的反斜杠被删除;但是,在这种情况下,不会删除双引号。
感谢评论中的 Christian.K。
传递给程序的参数取决于操作系统。
您应该在程序中测试空值、空字符串、去除空格和处理单引号/双引号的参数(根据需要)。