我已经阅读了很多关于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
答案 0 :(得分:2)
是的,您需要提供一些方法来说明哪个值是哪个 - 就像您在方法调用中对命名参数一样。常见的惯例是:
--myArg4=value4
--myArg4 value4
(有些工具更喜欢--
,有些人更喜欢-
。)
框架中没有内置任何内容可以非常简单地执行此操作,但commandline库非常容易包含(仅作为源包含 - 您不需要它作为单独的类库)。我们将Noda Time用于所有命令行工具。
根据我的经验,命名行命令参数相对较少,也可以在没有名称的情况下指定。因此,虽然可以说可以推断出有五个值,它们只是正确顺序中的五个值,但更常见的是只需要一切的名称。
在您的情况下,看起来value1
始终是必需的,因此可以推断为任何未命名参数的值...但我不知道命令行是否支持用例 - 你需要调查一下。