当我向 ReadLine() 输入 0 时,我得到 48。
这是一个错误吗?
class Program
{
static void Main(string[] args)
{
string name;
int age;
readPerson(out name, out age);
}
static void readPerson(out string name, out int age)
{
Console.Write("Enter name: ");
name = Console.ReadLine();
Console.Write("Enter age: ");
age = Console.Read();
Console.WriteLine("Name: {0}; Age: {1}", name, age.ToString());
}
}
最佳答案
不,这根本不是错误。
Console.Read()
返回输入的任何字符的 ASCII 字符代码。数字 0 的 ASCII 码是 48,数字 1 的 ASCII 码是 49,依此类推。不是随便加数字48,也不是跟out
参数有什么关系。
您需要读取一行并将输入相应地转换为整数:
Console.Write("Enter age: ");
age = Convert.ToInt32(Console.ReadLine());
如果出于任何原因需要使用 Read()
,那么就像我在评论中所说的那样,您需要将结果转换为 char
。您还需要将变量从 int age
更改为 char age
:
class Program
{
static void Main(string[] args)
{
string name;
char age;
readPerson(out name, out age);
}
static void readPerson(out string name, out char age)
{
Console.Write("Enter name: ");
name = Console.ReadLine();
Console.Write("Enter age: ");
age = (char) Console.Read();
Console.WriteLine("Name: {0}; Age: {1}", name, age.ToString());
}
}
请记住,Read()
一次只能读取一个字符,因此如果您需要解析多于一位的年龄,这将不起作用,您只使用 ReadLine()
会更好。
关于c# - Console.ReadLine 将 48 添加到 int,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9156363/