我正在制作一个我使用过方法的类。他们的变量直接在方法参数中声明。为什么我不能像字符串一样在下面声明int。
class studentinfoget
{
static void Getstudnetinformation(string firstname, string lastname, string birthday, string address, int cellnumber, int homenumber)
{
Console.WriteLine("enter your first name");
firstname = Console.ReadLine();
Console.WriteLine("enter your LAST NAME");
lastname = Console.ReadLine();
Console.WriteLine("enter your brithday ");
birthday = Console.ReadLine();
Console.WriteLine("enter birthday");
address = Console.ReadLine();
Console.WriteLine("enter address");
cellnumber = Console.ReadLine();
Console.WriteLine("enter adress");
}
此代码的错误是
CS0029 C#无法将类型'string'隐式转换为'int'
答案 0 :(得分:4)
您可以使用int.TryParse()
将输入转换为整数。
int.TryParse(Console.ReadLine(), out cellnumber);
但是,如果测试失败,cellnumber
将为0。
虽然单元格编号可能不一定是整数 - 您可以让某人输入单元格编号为"XXX-XXX XXXX"
,或者可能有超过10位数字,在这种情况下,您可能超过int.MaxValue
2,147,483,647。此外,起始数字可能为0,然后在存储时将其删除并使电话号码无效。
在这种情况下,我建议将值存储为字符串,至少保留用户输入的格式。
答案 1 :(得分:3)
cellnumber
被声明为int
但Console.ReadLine
返回string
。您需要将输入的文本转换为数字:
int.TryParse(Console.ReadLine(), out cellnumber);
TryParse
用于处理无效输入 - 如果用户输入Phone
或者某个不是TryParse
的内容不会抛出异常,它将返回false
但执行将继续。
答案 2 :(得分:0)
cellnumber = Int32.Parse(Console.ReadLine());
但您应将单元号和 homenumber 更改为字符串变量。