1. 隐式范例转换
所谓隐式转换,就是体系默许的转换,其本质是小存储容量数据范例自动转换为大存储容量数据范例。有以下几种:
从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范例。
2.显式范例转换
显式范例转换,即强迫范例转换。与隐式转换相反,而且强迫转换会形成数据丧失。
从sbyte到byte,ushort,uint,ulong,或char。
从byte到sbyte或char。
从short到sbyte,byte,ushort,uint,ulong,或char。
从ushort到sbyte,byte,short,或char。
从int到sbyte,byte,short,ushort,uint,ulong,或char。
从uint到sbyte,byte,short,ushort,int,或char。
从long到sbyte,byte,short,ushort,int,uint,ulong,或char。
从ulong到sbyte,byte,short,ushort,int,uint,long,或char。
从char到sbyte,byte,或short。
从float到sbyte,byte,short,ushort,int,uint,long,ulong,char,或decimal。
从double到sbyte,byte,short,ushort,int,uint,long,ulong,char,float,或decimal。
从decimal到sbyte,byte,short,ushort,int,uint,long,ulong,char,float,或double。
当转换有丧失信息或致使非常抛出,转换根据以下划定规矩举行:
关于从一种整型到另一种整型的转换,编译器将针对转换举行溢出检测,假如没有发生溢出,转换胜利,不然抛出一个OverflowException非常。这类检测还与编译器中是不是设定了checked选项有关。
关于从float,double,或decimal到整型的转换,源变量的值经由过程舍入到最接近的整型值作为转换的效果。假如这个整型值超出了目的范例的值域,则将抛出一个OverflowException非常。
关于从double到float的转换,double值经由过程舍入取最接近的float值。假如这个值太小,效果将变成正0或负0;假如这个值太大,将变成正
无限或负无限。假如原double值是Nan,则转换效果也是NaN。
关于从float或double到decimal的转换,源值将转换成小数情势并经由过程舍入取到小数点后28位(假如有必要的话)。假如源值太小,则效果为0;假如太大致使不能用小数示意,或是无限和NaN,则将抛出InvalidCastException非常。
关于从decimal到float或double的转换,小数的值经由过程舍入取最接近的值。这类转换可能会丧失精度,但不会引起非常。
以上就是C#的隐式和显现范例转换的内容,更多相关内容请关注ki4网(www.ki4.cn)!