Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/299.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 控制台应用程序应等待参数_C#_Parameters_Arguments_Console Application - Fatal编程技术网

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

C# 控制台应用程序应等待参数,c#,parameters,arguments,console-application,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是否可能在启动后等待我输入参数 我知道我可以打开c

我有一个控制台应用程序,看起来与此类似:

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)。但是这是唯一的方法吗?

如果应用程序打开并立即关闭,那是因为没有“阻塞”方法。您可以添加一个
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中完成


右键单击project->Properties->Debug->Command Line Arguments

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

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

请查看以了解更多信息

进一步信息:如果您想让应用程序保持打开状态,直到用户按下一个键,您可以使用
Console.Read()用于此

  • 右键单击默认项目
  • 选择“属性”
  • 单击左侧的“调试”选项卡
  • 在“命令行参数”中键入命令行参数
  • 保存更新的属性并运行项目
  • .exe是否可能在启动后等待我输入参数


    它不会等待
    参数
    ,因为这些参数应该在启动应用程序时传入,但您可以使用
    控制台实现应用程序以接受用户输入。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
        }
    }
    
    static void Main(字符串[]args)
    {
    如果(args.Length==0)
    {
    列表参数=新列表();
    做
    {
    Console.WriteLine(“输入参数并按:”);
    字符串参数=Console.ReadLine();
    if(string.IsNullOrEmpty(参数))
    打破
    参数。添加(参数);
    }虽然(正确);
    Console.WriteLine(“继续…”);
    }
    else if(args.Length%2==0)
    {
    //做点别的
    }
    }
    
    如果添加行:

    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传递一些参数,请在项目上单击鼠标右键->属性->调试->命令行参数

    写入控制台。在else if(){}完成后单击Readkey()


    在您按enter键之前,控制台将不会关闭。Visual Studio在项目属性中有一个页面,您可以在其中为应用程序放置默认参数。否则,您需要对一系列Console.ReadLine进行编码,以便直接在应用程序中获取所需的输入。它不会等待
    args
    ,因为这些参数在启动应用程序时传递,但是,您可以通过使用
    Console.ReadLine
    实现您的应用程序以接受用户输入。您没有显示会使控制台等待输入的代码。与其他一些脚本IDE不同,如果希望得到提示,则必须编写代码。如果您的查询是关于如何指示visual studio为应用程序提供命令行参数,那么您应该转到“项目属性”,在“调试”选项卡中,有一个“命令行参数”框,您可以在其中输入此信息。提示可能重复:您可以点击CTR+F5(在不使用调试器的情况下运行)来运行控制台应用程序。这将在关闭控制台窗口之前自动等待按键。这样你就不能测试“做其他事情”。命令行参数看起来很有希望。但我这里的问题是,可能不传递任何参数,或者最多传递10个参数。我想用调试参数无法解决这个问题?@axbeit没有参数有什么问题?您的代码
    如果(args.Length==0)
    将被执行。看起来你有不止一个问题。您想要启动参数(就像您在代码中使用的那样)还是想要用户输入作为参数?好的,所以我在命令行参数中输入了以下内容:“Argument1 Argument2 Argument3”。然后我构建我的项目。双击MyExe.exe,窗口很快就会弹出并关闭。但是我希望它能让我写下我的论点,而不是关闭它。看看mm8的答案。下一个问题要更具体;)当我们知道您想要实现的目标而不是询问您时,这会容易得多。命令行参数看起来很有希望。但我这里的问题是,可能不传递任何参数,或者最多传递10个参数。我猜这不能用调试参数来解决?在这种情况下,你可以创建第二个应用程序并运行进程。用你的参数(或不参数)启动你的应用程序。