C#类型转换
一、类型转换概念
类型转换从根本上说是类型铸造,或者说是把数据从一种类型转换为另一种类型。在C#中,类型铸造有两种形式:
—隐式类型转换 这些转换是C#默认的以安全方式进行的转换,不会导致数据丢失。例如:从小的整数类型转换为大的整数类型,从派生类转换为基类。
—显式类型转换 显式类型转换即强制类型转换。显式转换需要强制转换运算符,而且强制转换会造成数据丢失。
(一)隐式类型转换
隐式转换主要是在整形、浮点型之间的转换,将储存范围小的数据类型直接转换成储存范围大的数据类型。
实例:
135
隐式数值转换包括以下几种:
从sbyte类型到short,int,long,float,double或decimal类型
从byte类型到short,ushort,int,uint,long,ulong,float,double或decimal类型
从short类型到int,long,float,double或decimal类型
从ushort类型到int,uint,long,ulong,float,double或decimal类型
从int类型到long,folat,double,或decimal类型
从uint类型到float,ulong,long,double或decimal类型
从long类型到float,double或decimal类型
从ulong类型到float,double或decimal类型
从char类型到ushort,int,uint,long,ulong,float,double或decimal类型
从float类型到double类型
隐式数值转换实际上就是从低精度的数值类型到高精度的数值类型的转换。
(二)显式类型转换
显式类型转换即强制类型转换。显式转换需要强制转换运算符,而且强制转换会造成数据丢失。
强制类型转换主要用于将存储范围大的数据类型转换成存储范围小的、但数据类型需要兼容。
转换语法:
数据类型变量名=(数据类型)变量名或值
实例:
double dbl_num=123456.456;
int k=(int) dbl_num;//此处运用了强制转换
136
- 数据类型转换方法
- Parse方法
C#Parse方法用于将字符串类型转换成任意基本类型,具体的语法形式如下:
基本数据类型.Parse(字符串类型的值);
这里要求等号左、右两边的数据类型兼容。
实例:
static void Main(string[] args)
{
Console.WriteLine("请输入一个数字;");
string value=Console.ReadLine();
int num=int.Parse(value);
num++;
Console.WriteLine("输入的数字计算之后等于:{0}",num);
}
137
- Convert方法
Convert方法是数据类型转换中最灵活的方法,它能够将任意数据类型的值转换成任意数据类型,前提是不要超出指定数据类型的范围。
语法形式如下:
数据类型 变量名=convert.To数据类型(变量名);
这里Convert.To后面的数据类型要与等号左边的数据类型相匹配。
Convert类常用的类型转换方法如下表所示:
方法 | 说明 |
Convert.ToInt16() | 转换为整形(short) |
Convert.ToInt32() | 转换为整形(int) |
Convert.ToInt64() | 转换为整形(long) |
Convert.ToChar() | 转换为字符型(char) |
Convert.ToString() | 转换为字符串型(string) |
Convert.ToDateTime() | 转换为日期型(datetime) |
Convert.ToDouble() | 转换为双精度浮点型(double) |
Convert.ToSingle() | 转换为单精度浮点型(float) |
- 装箱和拆箱
装箱:将值类型转换为引用类型的操作。
拆箱:相应地将引用类型转换为值类型。
利用装箱和拆箱功能,可通过允许值类型的任何值与Object类型的值相互转换,将值类型与引用类型连接起来。
例:
int val=100;
object obj=val;
Console.WriteLine("对象的值={0}",obj);
//这是一个装箱的过程,是将值类型转换为引用类型的过程
int num=(int)obj;
Console.WriteLine("num:{0}",num);
//这是一个拆箱的过程,有引用类型转换为值类型的过程
140
&
141
142