C# 当输入两位或两位以上的数字时,Console.Read()是否将第一位数字作为输入?

C# 当输入两位或两位以上的数字时,Console.Read()是否将第一位数字作为输入?,c#,console.readline,C#,Console.readline,我是C#的新手。所以,我在练习写一些简单的代码。 我决定编写一个代码,用户在其中输入一个数字,相同的数字将显示为输出。我写了下面的代码,它工作得非常好 但是,当我决定用Console.Read()替换Console.Readline()以查看输出是什么,并运行代码时,我发现输出是我输入的数字的第一位的ASCII码。[也就是说,当我输入46时,输出是52。] 然而,当我使用Console.ReadLine()时,显示了整个两位数 根据我的说法,应该是Console.Read()只显示输入的数字的第

我是C#的新手。所以,我在练习写一些简单的代码。 我决定编写一个代码,用户在其中输入一个数字,相同的数字将显示为输出。我写了下面的代码,它工作得非常好

但是,当我决定用Console.Read()替换Console.Readline()以查看输出是什么,并运行代码时,我发现输出是我输入的数字的第一位的ASCII码。[也就是说,当我输入46时,输出是52。]

然而,当我使用Console.ReadLine()时,显示了整个两位数

根据我的说法,应该是Console.Read()只显示输入的数字的第一位,而Console.ReadLine()显示整个数字吗?

using System;

namespace ConsoleApplication
{
    class Program
    {
        static void Main(string[] args)
        {
            int num1;
            Console.Write("Enter a number:");
            num1 = Convert.ToInt32(Console.ReadLine());
            Console.WriteLine("The number is: " + num1);
            Console.ReadKey();

        }
    }
}

从文档中,
Console.Read
返回:

输入流中的下一个字符,如果当前没有更多字符可读取,则为负字符(-1)

作为
int

int
是读取字符的ASCII值。您只需强制转换到
char
即可获得角色:

int characterRead = Console.Read();
if (characterRead != -1) {
    char c = (char)characterRead;

    // if you want the digit as an int, you need
    int digit = Convert.ToInt32(c.ToString());
}

另外,请注意,第二次调用
Console.Read
将读取第二个数字。如果您想跳过此操作,您需要调用Console.ReadLine来清除任何未读内容。

是否有帮助?可能重复:我已经搜索了您提供的链接,但找不到足够的信息来消除所有疑问。从那里我知道ReadLine()读取整个字符串,而Read()只读取第一个字符。但我的疑问是,为什么在使用Read()时,它会显示第一个数字的ASCII码,而ReadLine()会显示整个数字,而不是ASCII码。@RajdeepDutta:提示:请查看
Console.Read()
的返回类型。它是
int
,因此它可以使用-1表示数据流的结束。如果值不是-1,只需返回到
char
即可输入文本。您似乎发布了许多观察结果,但我没有找到一个连贯的问题来回答。谢谢。这太完美了。是的,我做到了。不知道为什么它没有被标记。可能是我双击了。很抱歉