类型转换的概念
C#是一门强类型转换的语言,对类型要求比较严格,当在一定的条件下也是可以相互转换的,如将int类型转换为double类型。AS
在C#中允许有两中转换方式:隐式类型转换和显示类型转换。
C#中的隐式类型转换
隐式转换就是系统默认的、不需要加以声明就可以进行的转换。隐式转换不要求在源代码中使用任何特殊语法,编译器自动执行隐式强制转换。在隐式转换过程中,编译器无需对转换进行详细检查就能够安全地执行转换。隐式强制转换也称为“扩展转换“,因为要将窄数据类型转换为宽数据类型,且还将确保不会在转换过程中丢失数据。(注意:(1)转换前后的类型必须相兼容 (例如:int和double (2)、隐式数值转换实际上就是从低精度的数值类型到高精度的数值类型的转换,即小的类型转大的类型)
例:
C#中的显示类型转换
显示类型转换,又叫强制类型转换。与隐式类型转换正好相反,显示类型转换需要用户明确的指定要转换的类型。显示转换包括所有的隐式转换,也就是说把任何系统允许隐式转换的形式都是允许的。用 () 实现显示转换,这表示把转换的目标类型放在要转换的值之前的圆括号中。
例:
显示类型转换要注意的问题:
- 显式转换可能会导致错误。进行这种转换时编译器将对转换进行溢出检测。如果有溢出说明转换失败,就表明源类型不是一个合法的目标类型。无法进行类型转换。
- 强制类型转换可能会损失精度。
通过方法进行类型转换
使用ToString() 的方法,所有的类型都继承了基类object,所有的都可以使用ToString() 这个方法。
例:
如果我们想将任意的数据类型转换为字符串类型,可以使用Parse()方法:
例:
Convert方法
Convert 方法是数据类型转换中最灵活的方法,它能够将任意数据类型的值准会为任意数据类型,前提是不要超出指定数据类型的范围。
Convert 方法常用的几种:
Convert.ToInt32() 转换为整型(int)
Convert.ToChar() 转换为字符型(char)
Convert.ToString() 转换为字符串型(string)
Convert.ToDateTime() 转换为日期型(datetime)
Convert.ToDouble() 转换为双精度浮点型(double)
Conert.ToSingle() 转换为单精度浮点型(float)
例:
语法格式:Convert.To数据类型(变量名)
这里的Convert.To的后面需要和我们声明的数据类型相同。