浅谈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只有元素的数据类型不同,但它们的维数相同。

 

posted @ 2017-05-14 15:08  lily西里  阅读(783)  评论(0编辑  收藏  举报