前言

        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)

注意:

  1. 该方式是将字符串转换为整数类型;
  2. 如果字符串内容为空或者null时,则抛出ArgumentNullException异常;
  3. 如果字符串内容不是数字,则抛出FormatException异常;
  4. 如果字符串内容所表示数字超出指定的数据类型可表示的范围,则抛出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("输入错误!");
	}

注意:

  1. 该方式是将字符串转换为整数类型,但是它不会出现异常。
  2. 如果转换成功返回 true,如果转换失败返回 false。
  3. 很明显,最后一个参数为输出值,如果转换失败,输出值为 0;如果转换成功,则输出相应的值。

四. 使用Convert进行数据类型转换

方法说明
Convert.ToInt32()转换为整数类型(int)
Convert.ToChar()转换为字符型(char)
Convert.ToDouble()转换为双精度浮点型(double)
Convert.ToSingle()转换为单精度浮点型(float)
Convert.ToString()转换为字符串类型(string)
Convert.ToDateTime()转换为日期类型(datetime)

注意:

  1. 如果相兼容的两个变量,可以使用自动类型转化或者强制类型转换.
  2. 如果两个变量不兼容,我们就需要用到convert类进行转换。
  3. 转换为int型数据后进行 了四舍五入的计算。
  4. 使用Convert进行强制类型转化也要满足一个条件;那就是面上要过得去。例如:string num = “123abc”;不能转换成数值数值型

五. 使用 is 进行数据类型转换

	object o = "abc";
    if (o is string) //执行第一次类型兼容性检查
    {
        string s = (string)o; //执行第二次类型兼容性检查,并转换
        MessageBox.Show("转换成功!");
    }
    else
    {
        MessageBox.Show("转换失败!");
    }

is转换规则:

  1. 检查对象类型的兼容性,并返回结果true(false);
  2. 不会抛出异常;
  3. 如果对象为null,刚返回false;

六. 使用 as 进行数据类型转换

	 object o = "abc";
    string s = o as string; //执行第一次类型兼容性检查,并返回结果
    if (s != null)
    {
        MessageBox.Show("转换成功!");
    
    }
    else
    {
        MessageBox.Show("转换失败!");
	}

as转换规则:

  1. 检查对象类型的兼容性,并返回转换结果,如果不兼容则返回null;
  2. 不会抛出异常;
  3. 如果结果判断为空,则强制执行类型转换将抛出NullReferenceException异常;
  4. as 比 is 少执行一次兼容性检查,性能可能会高一点点。
Logo

旨在为数千万中国开发者提供一个无缝且高效的云端环境,以支持学习、使用和贡献开源项目。

更多推荐