区分c#Console App中的多个可选参数

时间:2015-03-20 12:53:25

标签: c# arguments console-application

我已经阅读了很多关于SoF的文章,但有趣的是,我觉得没有简明的答案。也许我还没找到正确的帖子。

我想知道在调用c#console应用程序时如何区分多个可选参数的最佳方法。

EG。 调用MyApp value1 [value2] [value3] [value4] [value5]

可以使用0-n的可选参数来调用此应用程序,例如:

c:\MyApp.exe value1 value2 value3
c:\MyApp.exe value1 value4 value5
c:\MyApp.exe value1 value4

等...

我可以用

提取参数
var argValue = args[1]

但我怎么知道所有这些可选参数实际使用了哪些?

我应该在它们前面加上预定义的标签,例如:

c:\MyApp.exe value1 myArg4:value4 myArg5:value5

1 个答案:

答案 0 :(得分:2)

是的,您需要提供一些方法来说明哪个值是哪个 - 就像您在方法调用中对命名参数一样。常见的惯例是:

--myArg4=value4
--myArg4 value4

(有些工具更喜欢--,有些人更喜欢-。)

框架中没有内置任何内容可以非常简单地执行此操作,但commandline库非常容易包含(仅作为源包含 - 您不需要它作为单独的类库)。我们将Noda Time用于所有命令行工具。

根据我的经验,命名行命令参数相对较少,也可以在没有名称的情况下指定。因此,虽然可以说可以推断出有五个值,它们只是正确顺序中的五个值,但更常见的是只需要一切的名称。

在您的情况下,看起来value1 始终是必需的,因此可以推断为任何未命名参数的值...但我不知道命令行是否支持用例 - 你需要调查一下。