C# 是否可以将名称/值作为参数传递到Windows控制台应用程序?

C# 是否可以将名称/值作为参数传递到Windows控制台应用程序?,c#,console-application,C#,Console Application,构建我的第一个控制台应用程序之一 这个控制台应用程序将运行我定义的一些存储过程。我希望能够通过命令行传入参数值 有没有办法传入名称-值对?例如: myConsoleApp.exe sproc_GetLastActives, @LastActiveDate - 11/20/2009 我知道如何检索参数值,但我注意到,如果我输入a/或a,则args[]会被拆分,。如何传入名称-值对 谢谢 你想把它放在一个字符串中吗?试试这个: myConsoleApp.exe "sproc_GetLastActi

构建我的第一个控制台应用程序之一

这个控制台应用程序将运行我定义的一些存储过程。我希望能够通过命令行传入参数值

有没有办法传入名称-值对?例如:

myConsoleApp.exe sproc_GetLastActives, @LastActiveDate - 11/20/2009
我知道如何检索参数值,但我注意到,如果我输入a/或a,则args[]会被拆分,。如何传入名称-值对


谢谢

你想把它放在一个字符串中吗?试试这个:

myConsoleApp.exe "sproc_GetLastActives, @LastActiveDate - 11/20/2009"
(即仅添加引号)


斜杠和逗号不应该影响任何东西,但是命令行解析器会在空格上拆分,除非您引用了它。

consoleapp.exe key1 val1 key2 val2

args[]
给出了您的4个项目,将它们配对到您的代码中:P

类似于,为什么不在一个字符串中传递值:

consoleapp.exe sproc_name key1=value1 "key2=Value With Spaces" key3=value3

然后只需测试是否存在
=
符号,并对其进行解析即可获得密钥/值对。

对于这个问题,有几种解决方案,最常见的是使用“/”或“-”作为参数前缀,并=从参数中分隔参数

consoleapp.exe /spname=sproc_GetLastActives /LastActiveDate="11/20/2009"
在代码中,您可以使用String.Split(arg[i],new char[]{'='})来分解各个参数