【问题标题】:command line in C#C#中的命令行
【发布时间】:2012-09-18 10:46:56
【问题描述】:

我有一个我想从命令提示符运行的工具。

代码如下

    static void Main(string[] args)
    {

        string User;            
        if (args[0].Length  != 0)
        {
             User = args[0];
        }
        else
        {
        Console.Write("Please Enter the Username");
        User = Console.ReadLine();
        }

如果我没有在命令提示符中的“tool.exe”之后给出用户名或第一个参数,它会引发异常,例如“索引超出数组范围”

我想输出,如果我没有给出论点 - 它应该提示我给出用户名。请帮帮我。

【问题讨论】:

    标签: c# command-line console


    【解决方案1】:

    args 是一个数组,你应该检查它的长度。当您检查args[0].Length 时,您实际上是在假设数组中已经至少有一个元素,因此您正在检查第一项的Length

    试试

    if (args.Length != 0)
    

    而是检查命令行参数数组的长度。

    【讨论】:

      【解决方案2】:

      您不想在该项目上调用Length

                  \/ Change here
           if (args.Length  != 0)
          {
               User = args[0];
          }
          else
          {
          Console.Write("Please Enter the Username");
          User = Console.ReadLine();
          }
      

      【讨论】:

        【解决方案3】:

        您需要将 if 更改为:

        static void Main(string[] args)
        {
        
            string User;            
            if (args.Length  != 0) // Change from args[0] to args
            {
                 User = args[0];
            }
            else
            {
            Console.Write("Please Enter the Username");
            User = Console.ReadLine();
            }
        }
        

        在这个电话之后,确保你做一个 string.IsNullOrEmpty(User) 在你使用它之前。

        【讨论】:

        • 为什么需要检查 null 或空?考虑到args.Length 只会在它实际上不为空且不为空的情况下评估为大于 0,那么需要额外检查什么?
        • 如果是,那么他执行 Console.Readline();这就是我这么说的原因。
        • 啊 - 在他的 Console.ReadLine() 之后。正确的。不完全清楚。 =)
        【解决方案4】:

        这样做

        static void Main(string[] args)
        {
        
        string User;            
        if (args.Length > 0)
        {
             User = args[0];
        }
        else
        {
        Console.Write("Please Enter the Username");
        User = Console.ReadLine();
        }
        }
        

        【讨论】:

          【解决方案5】:

          只需替换以下行:

          if (args[0].Length != 0)

          使用以下代码:

          if(arg.Length !=0) <br>
          

          在您的代码中,您在 args 数组中引用了第 0 项,然后检查其长度。
          由于要检查数组长度,请使用数组本身的 Length 属性t

          【讨论】:

            【解决方案6】:

            您必须检查参数数组的长度,即参数的数量。目前您正在检查 args[0] 的大小。

            if (args.Length  != 0)
            {
              // command have some params
            }
            else
            {
             // command have no params
            }
            

            【讨论】:

              【解决方案7】:

              通过这样做,您正在查看集合 string[] 中的第一个元素。

              if (args[0].Length  != 0)
              

              如果没有任何参数,这将给出一个异常。 如果要检查是否有任何参数,正确的语句如下。

              if (args.Length  != 0)
              //Or this
              if (args.Any())
              

              注意 Any() 是命名空间 System.Linq 的一部分。

              【讨论】:

                猜你喜欢
                • 2021-12-19
                • 2011-05-29
                • 2015-05-13
                • 2017-05-05
                • 1970-01-01
                • 2011-03-23
                • 1970-01-01
                • 2012-06-09
                • 1970-01-01
                相关资源
                最近更新 更多