【问题标题】:Accepting arguments for settings接受设置参数
【发布时间】:2013-02-24 09:16:21
【问题描述】:

您好,我正在编写命令行程序,并且正在努力接受参数。

我已经让应用程序在他们可以输入程序和数据的地方工作,即

CMD>software (name)

我只是不确定如何在他们可以配置设置的地方获取它,例如使用命令 -s 更改服务器。我需要让应用程序像这样工作:

CMD>software –s 192.168.1.1 (name)

CMD>software (name) -s 192.168.1.1 

我知道如何实际更改服务器等。只是不确定如何使用参数接受这些设置。

【问题讨论】:

  • 您的 Main 方法声明看起来如何?

标签: c# visual-studio command-line arguments


【解决方案1】:

你只需要让你的Main 方法接受一个字符串数组:

public class Test
{
    static void Main(string[] args)
    {
        for (int i = 0; i < args.Length; i++)
        {
            Console.WriteLine("{0}: {1}", i, args[i]);
        }
    }
}

然后:

test.exe foo bar baz

0: foo
1: bar
2: baz

请注意,与其他一些语言不同,args[0] 不是二进制文件的名称 - 它实际上是二进制文件的第一个参数

有第三方库可以帮助将一系列命令行参数转换为更有用的设置。例如,我们在 Noda Time 中嵌入了this one

【讨论】:

  • 感谢您的回复。很抱歉提出愚蠢的问题,但我如何将 for 循环中的信息转换为字符串。
  • @白痴:你什么意思?它们已经是 in 字符串(在 args 数组中)。如果你真的想要,你可以使用string firstArg = args[0];...
  • 对不起,我忘记了 main 方法声明的字符串数组,但我仍然不确定在 for 循环中放什么??
  • @Idiot:我不知道如何从这里回答你。我已经为您提供了有关如何获取用户在命令行中输入的字符串的信息。然后如何处理这些字符串是一个单独的问题-尽管您应该按照我的答案底部段落中的链接对一个(许多)第三方库进行解析。
  • 感谢您的回复。对不起,我应该更清楚。我目前有一个 switch 语句,它检查数组的长度,然后根据长度为 1 或 2 执行以下操作:case 1: string 1 = args[0];case2: string 1 = args[0]; and string 2 = args[1]; 我遇到的问题是他们可能没有输入设置,不一定在相同的顺序,真的不知道如何管理各种长度?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2016-07-06
  • 2014-09-30
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多