试图使命令窗口不消失

本文关键字:消失 窗口 命令 使命 | 更新日期: 2023-09-27 18:35:06

我对C#很陌生。所以请帮助我解决这个疑问。

当我运行此代码时,屏幕将暂停并等待输入。

    namespace HelloWorld1
    {
        class Program
        {
            static void Main(string[] args)
            {
                //int x=2;
                Console.WriteLine("Hello world! Enter an int.");
                Console.Read();
               /* x=Console.Read();
                Console.WriteLine("you've entered: " + x + " .");
                Console.ReadLine();
                */
            }
        }
    }

但是当我将代码更改为下面时,屏幕不再暂停...

namespace HelloWorld1
{
    class Program
    {
        static void Main(string[] args)
        {
            int x=2;
            Console.WriteLine("Hello world! Enter an int.");
            //Console.Read();
            x=Console.Read();
            Console.WriteLine("you've entered: " + x + " .");
            Console.Read();
        }
    }
}

为什么会这样?

编辑:

最新代码(仍然不暂停屏幕):

namespace HelloWorld1
{
    class Program
    {
        static void Main(string[] args)
        {
            int x=2;
            Console.WriteLine("Hello world! Enter an int.");
            x=Console.Read();
            Console.WriteLine("you've entered: " + x + " .");
            Console.ReadLine();
        }
    }
}

试图使命令窗口不消失

使用 Read() 方法的目的是什么?文档:"返回输入流中的下一个字符,如果当前没有更多要读取的字符,则返回负字符 (-1)。...对 Read 方法的后续调用一次检索一个字符的输入。检索最后一个字符后,读取会再次阻止其返回,并且循环重复。

请改用 Readline()。

使用"

调试"菜单中的"启动(不调试)启动"模式(Ctrl+F5)运行控制台应用程序。

如果使用普通的旧 F5 运行控制台应用程序,则控制台窗口将在屏幕上闪烁并消失,除非您向代码中添加 Console.ReadLine;使用 Control_F5,控制台窗口将保持在屏幕上,直到您按 Return 键。

来源:Visual Studio 提示:从调试开始和从调试开始之间的区别

Console.Read()基本上读取一个字符,因此如果您在控制台上并按下某个键,控制台将关闭,同时Console.Readline()将读取整个字符串并从输入流中返回下一行字符,如果没有更多行可用,则为 null。在代码的第一部分中,控制台等待按下一个键,这就是窗口悬而未决的原因。为了实现您的目标,我建议Console.ReadKey()方法,该方法获取用户按下的下一个字符或功能键。按下的键将显示在控制台窗口中,如此处所述。

使用 Read 函数时,它只返回下一个字符,这会在缓冲区中保留换行符(从按 Enter 开始)。然后,当您调用 ReadLine 时,它会自动读取左边的换行符,然后应用程序关闭。使用 ReadLine 获取您的 int,并将其转换:

int x = 2;
Console.WriteLine("Hello world! Enter an int.");
x = int.Parse(Console.ReadLine()); //Change this line right here
Console.WriteLine("you've entered: " + x + " .");
Console.ReadLine();