C# 为什么Convert.ToInt32(Console.Read())返回53而不是5?
该计划:C# 为什么Convert.ToInt32(Console.Read())返回53而不是5?,c#,C#,该计划: static void Main(string[] args) { int x; Console.Write("Enter number:"); x = Convert.ToInt32(Console.Read()); Console.WriteLine($"Output: {x}"); } 控制台文本: Enter number: 5 Output: 53 Press any key to continue... 截图: 输入数字5,但输出不是
static void Main(string[] args)
{
int x;
Console.Write("Enter number:");
x = Convert.ToInt32(Console.Read());
Console.WriteLine($"Output: {x}");
}
控制台文本:
Enter number: 5
Output: 53
Press any key to continue...
截图:
输入数字5,但输出不是5
Console.Read()
将单个字符作为字符
读取,而不是将整行作为字符串
读取char
值本身实际上是整数,在大多数操作中,C#/.NET不会将其作为文本处理,这可能会让初学者望而却步'5'
的整数值(作为char
)Convert.ToInt32(Char)
将Char
值视为整数(因此'5'
是53
),并将其转换为Int32
值,而不是将字符解析为十进制数字。
- 我强烈建议避免使用
类。在.NET框架中有更好的替代方案(例如Convert
)Int32.TryParse
Console.ReadLine()
和Int32.TryParse
而不是Convert.ToInt32
,这样您就可以优雅地处理无效输入
while( true )
{
Console.Write( "Enter number: " );
String input = Console.ReadLine();
if( Int32.TryParse( input, out Int32 value ) ) // ideally use the overload with NumberStyles.Any and CultureInfo.CurrentCulture to be explicit.
{
Console.WriteLine( $"Output: {value}" );
}
else
{
Console.WriteLine( "Please enter a valid number." );
}
}