控制台应用程序应等待参数

时间:2019-04-02 12:55:54

标签: c# parameters arguments console-application

我有一个类似于以下内容的控制台应用程序:

static void Main(string[] args)
{
   if(args.Length == 0)
   {
      //do something
   }
   else if(args.Length % 2 == 0)
   {
      //do something else
   }
}

现在,当我构建并启动我的.exe文件时,它眨眼即可运行代码并关闭。

.exe是否有可能在启动后等我输入参数?

我知道我可以打开cmd并将目录写入文件并写入参数(C:\ Example \ MyExe.exe -Parameter1)。但这是唯一的方法吗?

6 个答案:

答案 0 :(得分:4)

  

.exe是否有可能在启动后等我输入参数?

它不会等待args,因为应该在启动应用程序时将它们传递给您,但是您可以实现您的应用程序以使用Console.ReadLine接受用户输入。这是一个示例:

static void Main(string[] args)
{
    if (args.Length == 0)
    {
        List<string> arguments = new List<string>();
        do
        {
            Console.WriteLine("Input argument and press <ENTER>: ");
            string argument = Console.ReadLine();
            if (string.IsNullOrEmpty(argument))
                break;
            arguments.Add(argument);
        } while (true);

        Console.WriteLine("continue...");
    }
    else if (args.Length % 2 == 0)
    {
        //do something else
    }
}

答案 1 :(得分:1)

如果您的应用程序打开并立即关闭,那是因为没有“阻塞”方法。您可以在末尾添加Console.Read();,以等待按键被按下。

例如:

static void Main(string[] args)
{
   if(args.Length == 0)
   {
      //do something
   }
   else if(args.Length % 2 == 0)
   {
      //do something else
   }

   Console.WriteLine("Press any key to exit the application.");
   Console.Read();
}

要传递参数,我习惯使用cmd并将参数直接传递给exe,但这可以在VS中完成

右键单击项目->属性->调试->命令行参数

答案 2 :(得分:1)

是的,这是唯一的方法,因为在启动应用程序时会传递参数。

如果要调试,可以在Visual Studio中添加调试参数。为此,在项目上单击鼠标右键,然后打开项目的设置。然后,您可以在调试部分中添加它们。

请查看Passing command line parameters with Visual Studio C# 以获得更多信息。

更多信息:如果要让应用程序保持打开状态直到用户按下键,您可以使用Console.Read();

答案 3 :(得分:1)

  1. 右键单击默认项目
  2. 选择“属性”
  3. 单击左侧的“调试”标签。
  4. 在“命令行参数”中输入命令行参数。
  5. 保存更新的属性并运行项目。

答案 4 :(得分:1)

如果添加以下行:

Console.ReadLine();

控制台将保持打开状态,直到按下键为止。

因此您的代码应为:

static void Main(string[] args)
{
   if(args.Length == 0)
   {
      //do something
   }
   else if(args.Length % 2 == 0)
   {
      //do something else
   }
   Console.ReadLine();
}

要通过Visual Studio传递一些参数:右键单击项目-> 属性-> 调试-> 命令行参数

答案 5 :(得分:0)

在else if(){}完成之后写Console.Readkey()...

在您按Enter键之前,控制台不会关闭