Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/ant/2.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# 无法了解Console.Read()的工作情况_C# - Fatal编程技术网

C# 无法了解Console.Read()的工作情况

C# 无法了解Console.Read()的工作情况,c#,C#,我刚刚开始学习C#,我试图了解Console.ReadLine()Console.Read(),同时试图了解Console.Read()的工作原理,我遇到了以下问题。我试着执行下面的程序` enter cusing System; namespace Variables { class Program { static void Main(string[] args) { Console.Write("Give

我刚刚开始学习C#,我试图了解
Console.ReadLine()
Console.Read()
,同时试图了解
Console.Read()
的工作原理,我遇到了以下问题。我试着执行下面的程序`

enter cusing System;

namespace Variables
{
    class Program
    {
        static void Main(string[] args)
        {
            Console.Write("Give me an input :");
            Console.Read();
            Console.Write("Give me an input :");
            Console.Read();

        }
    }
在控制台中,我可以为第一个console.Read()语句提供输入,但对于后面的语句,程序甚至不接受输入就完成了执行。请解释为什么程序在不接受任何输入的情况下终止


每次调用
Console.Read()
一次返回1个字符,但输入会被缓冲,直到您第一次终止该行(即当您按Enter键时)

e、 g.如果键入
1[Enter]
,第一个
控制台.Read()
将返回
1
,第二个调用将返回
[Enter]
。对
Read()
的第一个调用将被阻止,而第二个调用不会被阻止(
[Enter]
将立即返回)


Read()
的任何后续调用都将再次阻塞,因为输入缓冲区现在为空。

Constole.Read()
只读取单个字符。您是否可能在第一条语句中键入了多个字符?如果是这样的话,我希望第二条语句会读取后续字符,然后您的程序就会退出。从您的屏幕截图中,我猜您正在键入1,然后按Enter键。输入击键(即换行符)将作为第二个
控制台的输入。当您怀疑某些内容未按您认为的方式工作时,请进行Read()
检查。这是否回答了您的问题?非常感谢@squillman,我正在做与你提到的相同的事情,现在我明白了。非常感谢,正如你提到的,我正在输入1并按下enter键。