C#中显式转换隐式转换的问题

来源:互联网 发布:mac如何剪辑音频文件 编辑:程序博客网 时间:2024/06/08 04:57

C#中存在类型转换,如int与double,string与object,string与时间等类型之间互相转换;

类型转换又分为显式转换和隐式转换,隐式转换是指不需要指定转换类型的转换,显式转换则必须指定转换类型。


例1.  int与double,(double表示范围大,且带小数,兼容int)

      

         int  i = 5;

         double d = 6.0;

         //d = i;       //把int类型转换成double,隐式转换

         i = (int)d ;     //把double类型转换成int,必须进行显式转换


例2.  Object 与 string(或其他),Object是所有类的父类


         Object obj = "Object";

          string str = "string";

          //obj = str;  //隐式转换,str本身就是一个Object。子类转换成父类可以进行隐式转换

          str = (string)obj;    //显式转换,Object包含很多,不止string,所以必须指定转换类型。


例3 .  不相关的两个类型之间要显式转换

         如:时间-字符串,数字-字符串,等等


总结:有时需要显式转换,有时不需要,但是任何时候都可以用显式转换。

通俗的说,从小类型向大类型转换时(数字从小范围到大范围;从子类到父类),一般不需要显式转换,相反,则需要显式转换。



2 0