C# 为什么';t Console.Read()返回输入的数字?
这是我在visual studio 2010 Ultimate和2008 Team System中用C#编写的程序: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 :
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做所有事情。