C# 为什么';t Console.Read()返回输入的数字?

C# 为什么';t Console.Read()返回输入的数字?,c#,visual-studio,C#,Visual Studio,这是我在visual studio 2010 Ultimate和2008 Team System中用C#编写的程序: class Program { static void Main(string[] args) { int a=0; Console.WriteLine("Enter a number: "); a = Console.Read(); Console.WriteLine("you Entered :

这是我在visual studio 2010 Ultimate和2008 Team System中用C#编写的程序:

class Program
{
    static void Main(string[] args)
    {
        int a=0;
        Console.WriteLine("Enter a number: ");
        a = Console.Read();
        Console.WriteLine("you Entered : {0}",a);
        Console.ReadKey();
     }
}
这就是结果:

输入一个数字: 5. 您输入:53


这是怎么可能的?

正如清楚地指出的,
Read()
返回您键入的Unicode码点的索引。

转换为字符代码。尝试:

a = int.Parse(Console.ReadLine());

中描述了您观察到的行为


尝试以下方法以实现您的目标:

class Program
{
    static void Main(string[] args)
    {
        Console.WriteLine("Enter a number: ");
        ConsoleKeyInfo a = Console.ReadKey();
        Console.WriteLine("you Entered : {0}",a.KeyChar);
        Console.ReadKey();
     }
}
我不熟悉C#,但据我所知,在创建变量a时没有必要初始化它。编写代码的另一种方法可以是:

class Program
{
    static void Main(string[] args)
    {
        int a;
        Console.WriteLine("Enter a number: ");
        a = Convert.ToInt32(Console.ReadLine());
        Console.WriteLine("you Entered : {0}", a);
        Console.ReadKey();
     }
}

如果按
Q
,您希望发生什么?您将获得5.Char和int的ANSI字符。。。。您输入一个字符,不进行转换,5只映射到ASCII字符编号53。没有转换器,5等于53。根据需要输出。对于初学者来说,这是一个有效的问题。让我们停止在它上面堆积投票。文档还提供了一个通过
Convert.ToChar
运行返回值的示例。我在该页面的任何地方都没有看到“Unicode”。因此,Unicode部分必须来自这样一个事实:c#用Unicode做所有事情。