浅谈c#中的类型转换
隐式转换:
隐式转换就是系统默认的、不需要加以声明就可以进行的转换。在隐式转换过程中,编译器无需对转换进行详细检查就能够安全地执行转换。
比如从int类型转换到long类型就是一种隐式转换。隐式转换一般不会失败,转换过程中也不会导致信息丢失。
比如:
int i=10;
long l=i;
装箱转换实际上就是一种隐式类型转换。在本节,我们还将讲解以下隐式转换的规则:
隐式数值转换
隐式数值转换包括以下几种:
●从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,float,double,或decimal类型。
●从uint类型到long,ulong,float,double,或decimal类型。
●从long类型到float,double,或decimal类型。
●从ulong类型到float,double,或decimal类型。
●从char类型到ushort,int,uint,long,ulong,float,double,或decimal类型。
●从float类型到double类型。
其中,从int,uint,或long到float以及从long到double的转换可能会导致精度下降,但决不会引起数量上的丢失。其它的隐式数值转换则不会有任何信息丢失。
显式转换:
隐式引用转换包括以下几类:
●从任何引用类型到对象类型的转换
●从类类型s到类类型t的转换,其中s是t的派生类。
●从类类型s
到接口类型t的转换,其中类s实现了接口t。
●从接口类型s到接口类t的转换,其中t是s的父接口。
从元素类型为Ts的数组类型S向元素类型为Tt的数组类型T转换,这种转换需要满足下列条件:
●S和T只有元素的数据类型不同,但它们的维数相同。