无法隐式转换类型';字符串';到';int';(CS0029)
本文关键字:int CS0029 字符串 转换 类型 | 更新日期: 2023-09-27 18:25:26
我正在学习C#,方法是遵循Lynda的基本培训教程,并尝试对它们的示例进行一些更改。
我陷入了一个错误,在谷歌上找不到解决方案。
无法将类型"string"隐式转换为"int"(CS0029)
代码:
namespace l2
{
class Program
{
public static void Main(string[] args)
{
int arg;
arg = Console.ReadLine();
int result1;
result1 = formula(arg);
Console.WriteLine("the result is {0}",result1);
Console.ReadKey();
}
static int formula (int theVal){
return (theVal * 2 + 15);
}
}
}
我真的不明白我为什么会犯那个错误。我的函数是获取一个int,我想从控制台获取的arg也是一个int。编译器谈论的字符串在哪里?:)
Console.ReadLine()
返回一个字符串。
你想要的是
arg = int.Parse(Console.ReadLine());
在这种情况下,正确的解决方案是.
string input;
input= Console.ReadLine();
int numberArg;
while (!int.TryParse(input, out numberArg))
{
Console.WriteLine(@"Wrong parameter. Type again.");
input= Console.ReadLine();
}
var result1 = formula(numberArg);
Console.WriteLine("the result is {0}", result1);
Console.ReadKey();
您还可以尝试使用int.TryParse
进行一些微妙的验证。它将尝试将值转换为整数,如果确实失败,它将使用原始值:
int id = 1;
int.TryParse("Hello", out id);
Console.WriteLine(id)
输出:1
int id = 1;
int.TryParse("40", out id);
Console.WriteLine(id)
输出:40
还要注意,Console.ReadLine()
将返回一种类型的string
。因此,为了正确地解决您的问题,您可以执行以下操作:
int arguement = 0;
while(!int.TryParse(Console.ReadLine(), out arguement)
{
Console.WriteLine(@"Error, invalid integer.");
Console.ReadLine();
}
因此,在他们输入一个有效的整数之前,他们将被困在循环中。