如何在C#中转换为不同的数据类型

时间:2013-10-10 10:26:56

标签: c# visual-studio-2010 converter

我是C#的新手,正在尝试控制台应用程序中的一些东西。我试图获取userinput并将其转换为不同的数据类型,然后显示转换后的数据。

到目前为止我试过这个:

string  userInput;
int     intInput;
float   floatInput;

Console.WriteLine("Please enter a number: ");
userInput = Console.ReadLine();

intInput = Convert.ToInt32(userInput);
floatInput = (float)intInput;


Console.WriteLine("String input: "+userInput+"\n");
Console.WriteLine("Integer input: " + intInput + "\n");
Console.WriteLine("Float input: " + floatInput + "\n");

它在视觉工作室中没有给我任何错误,但是当我运行程序时它喜欢整数并显示它们。但是,当我输入4.4这样的数字时,它会停止该程序,并为此行FormatException was unhandled发出警告inInput = convert.ToInt32(userInput);

我的本​​地窗口显示:

userInput = "4.4"
intInput = 4
floatInput = 4.0

为什么我收到此错误?这是转换数据类型的正确方法吗?

编辑:因为我不知道用户可能输入了什么,我怎么能以某种方式测试它?

3 个答案:

答案 0 :(得分:3)

错误

您收到此错误,因为“4.4”不是表示整数的值,因此无法转换。

以下是一篇很好的文章,可以更好地理解基本数据类型和典型值:

http://www.tutorialspoint.com/csharp/csharp_data_types.htm

<强>加工

请注意,有几种方法可以处理您在此处将字符串“转换”为另一种数据类型所要实现的任务。

对于Integers,例如,您可以使用TryParse:

http://msdn.microsoft.com/en-us/library/f02979c7.aspx

TryParse不会引发异常并破坏您的应用程序。

处理例外情况

另请注意,这里的“未处理”意味着您的代码无法使用适当的Try Catch块来处理此类错误:

http://msdn.microsoft.com/en-us/library/vstudio/0yd65esw.aspx

使用Try Catch块包装可能有错误的代码可以让您更优雅地处理异常。

答案 1 :(得分:1)

4.4不是整数,它(可能)是小数。

如果您想接受十进制输入,则需要更改变量的类型,然后使用Convert.ToDecimal。

答案 2 :(得分:0)

datatype test =“xyz”; // datatype- int,float ..

datatype.TryParse(variable,out test);

如果(测试== “XYZ”) //解析可以完成