前言
Convert、Parse、TryParse 、(int)四个函数都是将值转换成整数,但是四者之间各有异同,还可以通过is、as进行数据类型转换,开发人员可以根据情况选用最合适的。本篇介绍数据类型直接转换希望对大家有所帮助。
一. 隐式类型转换和显示类型转换
1. 自动类型转换(隐式类型转换)
不同类型之前进行计算时,数据类型会往大的数据类型转换
2. 强制类型转换(显示类型转换)
强制类型转换往往是从宽大的类型转换为小的数据类型
int a = 10;
double b = 20.5;
double c = a +b;//低级转高级,自动转换
int d = (int) c;//高级转低级,强制转换
二. 使用Parse进行数据类型转换
方法 | 说明 |
---|---|
int.Parse(string value) | 字符串类型转换成整数类型(int) |
char.Parse(string value) | 字符串类型转换成字符类型(char) |
double.Parse(string value) | 字符串类型转换成单精度浮点类型(double) |
Single.Parse(string value) | 字符串类型转换成双精度浮点类型(float) |
注意:
- 该方式是将字符串转换为整数类型;
- 如果字符串内容为空或者null时,则抛出ArgumentNullException异常;
- 如果字符串内容不是数字,则抛出FormatException异常;
- 如果字符串内容所表示数字超出指定的数据类型可表示的范围,则抛出OverflowException异常。
三. 使用TryParse进行数据类型转换
方法 | 说明 |
---|---|
int.TryParse(string s, out int result) | 字符串类型转换成整数类型(int) |
char.TryParse(string s, out char result ) | 字符串类型转换成字符类型(char) |
double.TryParse(string s, out double result) | 字符串类型转换成单精度浮点类型(double) |
Single.TryParse(string s, out float result) | 字符串类型转换成双精度浮点类型(float) |
Console.Write("请输入int类型的整数:");
int result = 0;
bool flag = int.TryParse(Console.ReadLine(),out result);
if(flag)
{
Console.WriteLine($"您输入的数字为{result}");
}
else
{
Console.WriteLine("输入错误!");
}


注意:
- 该方式是将字符串转换为整数类型,但是它不会出现异常。
- 如果转换成功返回 true,如果转换失败返回 false。
- 很明显,最后一个参数为输出值,如果转换失败,输出值为 0;如果转换成功,则输出相应的值。
四. 使用Convert进行数据类型转换
方法 | 说明 |
---|---|
Convert.ToInt32() | 转换为整数类型(int) |
Convert.ToChar() | 转换为字符型(char) |
Convert.ToDouble() | 转换为双精度浮点型(double) |
Convert.ToSingle() | 转换为单精度浮点型(float) |
Convert.ToString() | 转换为字符串类型(string) |
Convert.ToDateTime() | 转换为日期类型(datetime) |
注意:
- 如果相兼容的两个变量,可以使用自动类型转化或者强制类型转换.
- 如果两个变量不兼容,我们就需要用到convert类进行转换。
- 转换为int型数据后进行 了四舍五入的计算。
- 使用Convert进行强制类型转化也要满足一个条件;那就是面上要过得去。例如:string num = “123abc”;不能转换成数值数值型
五. 使用 is 进行数据类型转换
object o = "abc";
if (o is string) //执行第一次类型兼容性检查
{
string s = (string)o; //执行第二次类型兼容性检查,并转换
MessageBox.Show("转换成功!");
}
else
{
MessageBox.Show("转换失败!");
}
is转换规则:
- 检查对象类型的兼容性,并返回结果true(false);
- 不会抛出异常;
- 如果对象为null,刚返回false;
六. 使用 as 进行数据类型转换
object o = "abc";
string s = o as string; //执行第一次类型兼容性检查,并返回结果
if (s != null)
{
MessageBox.Show("转换成功!");
}
else
{
MessageBox.Show("转换失败!");
}
as转换规则:
- 检查对象类型的兼容性,并返回转换结果,如果不兼容则返回null;
- 不会抛出异常;
- 如果结果判断为空,则强制执行类型转换将抛出NullReferenceException异常;
- as 比 is 少执行一次兼容性检查,性能可能会高一点点。