【问题标题】:How to receive an argument in console program?如何在控制台程序中接收参数?
【发布时间】:2011-02-22 11:43:26
【问题描述】:

所以我希望其他用户能够运行我的程序发送参数。这种事情怎么办?

【问题讨论】:

    标签: c# console command-line-arguments


    【解决方案1】:

    如果你有一个 Main 方法(你将拥有一个命令行应用程序),你可以直接作为 args 字符串数组参数访问它们。

    public static void Main(string[] args) {
       var arg1 = args[0];
       var arg2 = args[1];
    }
    

    如果您在代码中的其他位置,您可以访问静态 Environment.GetCommandLineArgs 方法

    //somewhere in your code
    var args = Environment.GetCommandLineArgs();
    var arg1 = args[0];
    var arg2 = args[1];
    

    【讨论】:

      【解决方案2】:

      你的意思是启动时的args?比如myapp.exe blah blah2 blah3

      让你的主要方法看起来像这样:

      public static void Main(string[] args)
      {
      
      }
      

      现在args 是传递给程序的参数数组。所以在示例案例中,args[0] == "blah"args[1] == "blah2"

      【讨论】:

      • @OP:只是出于好奇……你认为你所有程序中的string[] args到底是用来做什么的?
      • 在 C# 中,string[] 参数是可选的。也许他以前从未见过/使用过它?
      【解决方案3】:

      程序从具有此签名的方法运行

      public static void Main(string[] args)
      

      参数args 将包含命令行参数,以空格分隔。

      【讨论】:

      • 是空间分割,还是比这更复杂?如果程序像这样调用:myapp.exe "blah blah2",不会args[0] == "blah blah2"
      • @rmeador 这由你的 shell(通常是 cmd.exe)决定。你是对的,如果你想在你的论点中有一个空格,你需要引用它。使用另一个 shell(例如 bash,在 unix 世界中很常见,或者在 PC 上使用 cygwin),您也可以使用 ` \ ` 转义它,例如 ./mypapp.exe blah\ blah2
      • @Dolphin 实际上,我认为您也可以在 windows (cmd) 上使用反斜杠转义空格。但是,我现在在 Unix 上,所以很遗憾我无法对其进行测试。
      【解决方案4】:

      虽然 string[] args 工作得很好,但值得一提的是Environment.GetCommandLineArgs

      【讨论】:

      • +1 这里也是。我在写答案时对此感到疑惑。
      【解决方案5】:

      您可以从Main 的可选string[] 参数中读取命令行参数:

      static void Main(string[] args)
      {
          if (args.Length >= 1)
          {
              string x = args[0];
              // etc...
          }
      }
      

      请注意,以下 Main 方法的声明也是有效的,但您无法访问命令行参数:

      static void Main()
      {
          // ...
      }
      

      有关详细信息,请参阅documentation

      【讨论】:

        【解决方案6】:

        这是默认支持的,参数会出现在传递给你的程序的args数组中。

        public static void Main(string[] args)
        

        如果你说

        App.exe Hello World What's Up
        

        在命令行上,您将收到一个像这样的 args 数组:

        [0] = "Hello"
        [1] = "World"
        [2] = "What's"
        [3] = "Up"
        

        由你决定你想要什么参数,它们将如何格式化,等等。

        【讨论】:

          【解决方案7】:

          试试这些:

          http://sourceforge.net/projects/csharpoptparse/

          http://www.codeproject.com/KB/recipes/command_line.aspx

          它们基本上允许您定义 args 并以 OO 方式解析它们,而不必进行大量字符串比较之类的东西。我在java中使用了一个类似的,它很棒

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 2016-05-15
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            相关资源
            最近更新 更多